0

以下内容非常适合将数据从一页转发到另一页:

<%= link_to 'New Work Order', new_workorder_path, :class => 'btn btn-primary', :onclick =>  session[:worequest_id]  %>

我将如何添加第二个字段?以下不起作用:

          <%= link_to 'New Work Order', new_workorder_path, :class => 'btn btn-primary', :onclick =>  session[:worequest_id] = @worequest.id, [:client_id] = @worequest.client_id %>

谢谢!

更新

这是我在新工作订单表单中使用的代码。它从会话中获取 wearquest_id 字段

       <% if session[:worequest_id] != nil %>
        <%= f.hidden_field :worequest_id, :value => session[:worequest_id] %>
4

1 回答 1

2

onclick这种方式并没有真正起作用——它是一个 html 属性,用于存储单击元素时要执行的 JavaScript 代码。虽然您可以使用它在 Ruby 方法调用的上下文中评估 Ruby 代码(在这种情况下,作为给定的选项哈希的一部分link_to),但这样做并没有真正意义。

在您的第一个示例中,它实际上并没有做任何事情。如果您在显示该链接的页面上检查您呈现的 html,我希望它的评估结果类似于<a href="..." onclick="6">New Work Order</a>. 但是,您可以将数据存储在session其中(只要用户保持登录状态,该数据就会一直存在),这就是为什么您会看到这些数据从一个页面转移到另一个页面的原因。

如果您尝试为新工作订单填写默认值,您可以将它们作为参数传递给 path 方法:

link_to 'New Work Order', 
  new_workorder_path('workorder[worequest_id]' => @worequest.id, 
                     'workorder[client_id]'    => @worequest.client_id),
  :class => 'btn btn-primary'

在您的workorders#new操作中,您的模型实例化需要包含以下参数:

def new
  @workorder = Workorder.new(params[:workorder])
end

但是,这可能不是最好的方法。如果总是有一个客户端或穿戴任务与工作订单相关联,您可能需要查看嵌套路由

于 2012-12-17T17:37:07.710 回答