如果我有两个模型,例如Question
和Answer
。 Question
有三列,如question_id, question_type, question_text
,Answer
有三个值answer_id, question_id, answer_text
。
我正在为Answer
模型创建表单。
示例:
<%= f.text_field :question_id %>.
<%= f.hidden_field :question_id %>.
在这里,我使用hidden field
查找question_type
。我尝试了map
方法,但这不起作用。所以有人通过选择question_type
来帮助我获得question_id
值。
由于
答案 0 :(得分:1)
您可以在控制器中提取答案时包含问题,然后在视图中无需额外查询即可完全访问这两个问题:
在控制器中:
@answer = Answer.includes(:question).where(:id => params[:answer_id])
在视图中:
<%= @answer.question.question_type %>
如果这是一个新答案,您可以创建它并在控制器中将问题传递给它:
@answer = Answer.new(:question => Question.find(params[:question_id]))
然后在您的表单中,您可以使用以下方式访问它:
<%= @answer.question.question_type %>
答案 1 :(得分:1)
捎带iouri说的话。如果模型中的关系设置正确,您应该能够使用点表示法来获取answer.question.question_type中的question_type。
你需要像...这样的东西。
class Question < ActiveRecord::Base
has_many :answers
accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
belongs_to :question
end
因此,这将使您能够调用answer.question.question_type,而不是accept_nested_attributes_for:answer,这将有助于构建关联。
Ryan Bates在这里有一个很棒的截屏视频http://railscasts.com/episodes/196-nested-model-form-part-1
祝你好运!