0

如果我有两个模型,例如QuestionAnswerQuestion有三列question_id, question_type, question_textAnswer有三个值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

谢谢

4

2 回答 2

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 %>
于 2012-10-10T21:36:12.940 回答
1

背诵iouri所说的话。如果您的模型中的关系设置正确,您应该能够使用点表示法来获取 question_type,如 answer.question.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 :answers 这将有助于建立关联。

Ryan Bates 在这里有一个很好的截屏视频http://railscasts.com/episodes/196-nested-model-form-part-1

祝你好运!

于 2012-10-11T13:45:02.807 回答