如何使用rails中的隐藏表单设置对象值

时间:2015-08-26 14:54:17

标签: ruby-on-rails forms ruby-on-rails-4

我有一个用户模型(cliens和perfomers),而且cliens也有订单。 Perfomers可以接受这个订单,我需要在订单的显示模板中放置接受按钮。我在节目模板中使用隐藏的表单

<%= form_tag @order, :method => 'get' do %>
<%=hidden_field_tag :order_perfomer_id, current_user.id%>

<%= submit_tag "Accept order"%>

它不起作用。这是错误的方式吗?在控制台中我看到了

Parameters: {"utf8"=>"✓", "order_perfomer_id"=>"3", "commit"=>"Accept order", "id"=>"1"}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您必须使用form_tag

form_for内容
<%= form_for @order, :method => 'get' do |f| %>
<%= f.hidden_field :order_perfomer_id, value: current_user.id%>

<%= f.submit "Accept order"%>

答案 1 :(得分:1)

对于Rails 4:

<%= f.hidden_field :order_perfomer_id, value: current_user.id %>

Rails 3和2:

<%= f.hidden_field :order_perfomer_id, :value => current_user.id %>

此外,您需要使用form_for代替form_tag,并且您的表单会变为:

<%= form_for @order, :method => 'get' do |f|%>
<%= f.hidden_field :order_perfomer_id, value: current_user.id%>

<%= f.submit "Accept order"%>