我有一个包含请求和工作程序表的Rails应用程序。
我在请求显示页面上有一个新的工作订单按钮。我需要将请求中的信息传递给工作订单 - 例如Request.id。
我目前正在使用闪存来执行此操作。这是请求显示页面上的按钮:
<%= link_to 'New Work Order', new_workorder_path, :class => 'btn btn-primary', :onclick => (flash[:request_id] = @request.id %>
在新的工作订单表格中,我有:
<% if flash[:request_id] != nil %>
<%= f.hidden_field :request_id, :value => flash[:request_id] %>
这很有效。但不总是。我有时无法弄清楚它为什么会失败。
有更好的方法来传递这些数据吗?
感谢您的帮助!!
UDPDATE1
有时我需要提出相当多的数据字段。例如:
<%= link_to 'Follow-up Work Order', new_workorder_path, :class => 'btn btn-primary', :onclick => ( flash[:workorder_id] = @workorder.id, flash[:client_id] = @workorder.client_id, flash[:contact_id] = @workorder.contact_id, flash[:location_id] = @workorder.location_id, flash[:type_id] = @workorder.type_id, flash[:woasset_id] = @workorder.woasset_id) %>
答案 0 :(得分:3)
您可以尝试将参数传递给链接的路径,然后通过控制器的操作将其传递给表单:
链接:
<%= link_to 'New Work Order', new_workorder_path(request_id: @request.id), :class => 'btn btn-primary' %>
控制器
def new
@request_id = params[:request_id]
...
end
在您看来:
<%= f.hidden_field :request_id, value: @request_id %>