Почему контроллер не «видит» значение, введенное в форму - PullRequest
0 голосов
/ 28 декабря 2010

У меня это в представлении Rails 3.0.3:

<%= form_tag line_items_path(:product_id => @product), :remote => true  do %>
  <%= number_field_tag (:amount, 1, { :size => 3, :min => 1}) %>
  <%= submit_tag t('button.add_to_cart'), :name => nil %>
<% end %>

Представление выглядит вполне нормально.В методе создания line_items_controller я пытаюсь получить доступ к числовому полю:

@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id, params[:amount])

Это не сработало, поэтому я попытался просмотреть числовое поле, напечатав его на консоли:

p params[:amount]

Это напечатало «ноль» независимо от того, что я ввел в поле формы.Я также напечатал весь хэш params с

p params

и получил

{"product_id"=>"1", "action"=>"create", "controller"=>"line_items", "locale"=>"fi"}

, то есть поле amount отсутствует, что объясняет «ноль», но яЯ немного (хорошо, очень) запутался здесь, так как я прочитал документацию по form_tag и понял, что контроллер должен видеть содержимое поля через params[:amount], но это не так.

Пожалуйста, помогитемне.Что я делаю не так?

/ л.с.

1 Ответ

0 голосов
/ 29 декабря 2010

Я чувствую себя таким глупым сейчас ... Форма работает сейчас, когда она полностью находится внутри тега <td>, например:

  <tr>
   <td colspan="2">
      <%= form_tag line_items_path(:product_id => @product), :remote => true  do  %>
          <%= number_field_tag(:amount, 1, :size => 3, :min => 1) %>
          <%= submit_tag t('button.add_to_cart'), :name => nil %>
      <% end %>
   </td>
  </tr>

У меня было form_tag, и соответствующийend перед тегом <tr> и после тега </tr> соответственно.

Спасибо, что уделили время!

...