我在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的create方法中,我尝试访问数字字段:
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id, params[:amount])
这不起作用,所以我尝试通过将数字字段打印到控制台来检查数字字段:
p params[:amount]
无论我在表格字段中输入什么,都打印出“nil”。我还用
打印了整个params
哈希
p params
得到了
{"product_id"=>"1", "action"=>"create", "controller"=>"line_items", "locale"=>"fi"}
即。 amount
字段不存在,这解释了“nil”,但我有点(好吧,很多)在这里感到困惑,因为我已经阅读了form_tag文档,并且收集到控制器应该看到字段内容通过params[:amount]
,但它没有。
请帮帮我。我做错了什么?
/马力
答案 0 :(得分:0)
我现在感觉很愚蠢...这个表单现在正常运行,当它完全位于<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>
。
感谢您的时间!