Использование помощника textarea в формах Rails - PullRequest
15 голосов
/ 10 ноября 2010

Почему этот код показывает ошибку в текстовой области?

<%= form_for(:ad, :url => {:action => 'create'}) do |f| %>
  <%= f.text_field(:name) %>
  <%= f.text_area_tag(:text, "", :size => "50x10") %>
  <%= submit_tag("Submit") %>
<% end %>

Ответы [ 2 ]

26 голосов
/ 10 ноября 2010

Метод FormHelper: text_area, а не text_area_tag.

. Используйте одно из следующих действий:

<%= f.text_area(:text, size: '50x10') %>

или:

<%= text_area_tag(:ad, :text, size: '50x10') %>
5 голосов
/ 10 ноября 2010

Переменная f, которую вы создаете в первой строке, является ссылкой на ваш FormBuilder .По умолчанию он ссылается на ActionView::Helpers::FormBuilder или вы можете создать свой собственный.

Помощник FormBuilder для текстовых областей называется text_area.Помощники FormBuilder умнее обычных помощников HTML.Модели Rails могут быть вложены логически, и ваши формы могут быть написаны для отражения этого;одна из основных вещей, которые делают помощники FormBuilder, это отслеживание того, как каждое конкретное поле связано с вашей моделью данных.

Когда вы вызываете f.text_area, так как f связан с формой с именем :adполе с именем :text создает поле с именем ad[text].Это соглашение о параметрах, которое будет автоматически анализироваться в Hash на сервере: { :ad => { :text => "value" } } вместо простого списка параметров.Это очень удобно, потому что если у вас есть Модель с именем Ad, вы можете просто позвонить Ad.create(params[:ad]) и все поля будут заполнены правильно.

text_area_tag - это общий помощник, который неподключен к форме автоматически.Вы все еще можете заставить его делать то же самое, что и FormBuilder#text_area, но вы должны сделать это вручную.Это может быть полезно в ситуациях, которые хелпер FormBuilder не предназначен для покрытия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...