我有一个Makes模型:
class Make < ActiveRecord::Base
attr_accessible :name
has_many :models, dependent: :destroy
has_many :trims, :through => :models
end
和模型模型:
class Model < ActiveRecord::Base
attr_accessible :name, :year, :make_id, :trim_id
belongs_to :make
has_many :trims
validates :make_id, presence: true
end
现在忽略我的质量分配漏洞一秒钟,我如何完成这样的事情:一旦通过/ makes / new创建一个Make并返回到make / 1,就会显示一个包含创建模型的链接的页面那个。
我知道我可以定义另一个控制器来执行此操作并预填充make_id
字段,但这是正确的方法吗?我创建模型的路线是/models/new
。有没有办法预填这种形式,并让它表现得好像它没有预先填充?
答案 0 :(得分:1)
执行此操作的一种可靠方法是创建一个动态路径来建模/ new /:make_id。
在make#show页面的“使用该Make创建模型的链接”中,将其设置为使用新路线。
然后,在模型控制器的新操作中,将其分配给自己的实例变量:
@make_id = params[:make_id]
在模型#new的视图中,您可以使用该变量填充表单的make text_field(假设它是text_field):
<%= f.text_field :make, :value => @make_id %>
如果你想更精细,你可以在你的视图中使用@make_id来隐藏文本字段并设置一个隐藏的输入,如果@ make.present?。由于任何人都可以通过摆弄URL来搞乱该页面,我建议验证传入的make_id是否有效。