我有一个普通的表单来在/packages/new
创建一个Package对象:
<%= form_for @package do |f| %>
<%= f.text_field :name %>
<%= f.text_field :address %>
...
<% end %>
包裹模型belongs_to :partner
。
我正在寻找一种方法将新的包形式与特定的合作伙伴相关联,最好不要填写用户的任何输入。
例如,如果合作伙伴A发送了表单链接,我希望该表单包含partner_id:A.id
。
如何将表单连接到合作伙伴?
答案 0 :(得分:1)
您可以发送partner_id
param以及您的合作伙伴将发送的链接。
像
这样的东西http://website.com/packages/new?partner_id=3
在表单
中使用param作为hidden_field
<%= form_for @package do |f| %>
<%= f.text_field :name %>
<%= f.text_field :address %>
<%= f.hidden_field :partner_id, value: params[:partner_id] %>
...
<% end %>
或者您也可以使用Nested Resources
答案 1 :(得分:0)
你可以拥有将partner_id传递给控制器的隐藏字段
http://apidock.com/rails/ActionView/Helpers/FormHelper/hidden_field
答案 2 :(得分:0)
如果合作伙伴需要登录,为了创建包,您可以在保存之前将包直接链接到控制器中的合作伙伴。
如前所述,请使用参数。如果需要,不要忘记在控制器中允许所需的参数(通过链接,向下滚动一点)。 documentation: params
查看例如: .build()适合你。 more about relations and how to set them up correctly