Rails将信息从视图传递到表单

时间:2013-04-29 12:51:21

标签: ruby-on-rails

我有一个包含请求和工作程序表的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) %>

1 个答案:

答案 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 %>