以下内容适用于将数据从一个页面传送到另一个页面:
<%= 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 %>
谢谢!
已更新
这是我在新工作单表单中使用的代码。它从会话
中获取worequest_id字段 <% if session[:worequest_id] != nil %>
<%= f.hidden_field :worequest_id, :value => session[:worequest_id] %>
答案 0 :(得分:2)
onclick
并不是真的以这种方式工作 - 它是一个html属性,用于存储在单击元素时要执行的JavaScript代码。虽然你可以使用它在Ruby方法调用的上下文中评估Ruby代码(在这种情况下作为给予link_to
的选项哈希的一部分),但它确实没有意义这样做。
在你的第一个例子中,它实际上并没有做任何事情。如果您在显示该链接的页面上检查渲染的html,我希望它的评估结果为<a href="..." onclick="6">New Work Order</a>
。但是,您可以将数据存储在session
中(只要用户保持登录状态,这是持久的),这就是您在页面之间看到这些数据的原因。
如果您尝试填写新工单的默认值,可以将它们作为参数传递给路径方法:
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
但是,这可能不是最好的方法。如果始终存在与工作订单关联的客户或服务,您可能需要查看nested routes。