0

我有一个 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 创建模型的链接的页面。

我知道我可以定义另一个控制器来执行此操作并预填充该make_id字段,但这是正确的方法吗?我创建模型的路线是/models/new. 有没有办法预先填写该表格,并让它表现得好像没有预先填写一样?

4

1 回答 1

1

一种可靠的方法是创建一条到 model/new/:make_id 的动态路由。

在您的 make#show 页面上的“使用该 Make 创建模型的链接”中,将其设置为使用您的新路线。

然后,在模型控制器的新操作中,将其分配给它自己的实例变量:

@make_id = params[:make_id]

在 model#new 的视图中,您可以使用该变量填充表单的 make text_field(假设它是 text_field):

<%= f.text_field :make, :value => @make_id %>

如果您想更详细一点,您可以在视图中使用@make_id 来隐藏文本字段并设置隐藏输入 if @make.present?。由于任何人都可以通过摆弄 URL 来弄乱该页面,因此我建议验证传入的 make_id 是否有效。

于 2012-04-25T01:48:49.423 回答