如何在rails上的ruby中通过关联获取另一列的值?

时间:2012-10-10 20:30:31

标签: javascript ruby-on-rails ruby ruby-on-rails-3

如果我有两个模型,例如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值。

由于

2 个答案:

答案 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

祝你好运!