我正在为我的网站构建一个问卷调查,并且我的模型设置如下:
Question - has_many :answers
Answer - belongs_to :question
Response - belongs_to :answer, :user_application
UserApplication - has_many :responses
Answers
是设置的答案,它们可以是 Yes、No 或一个句子,Responses
是一个嵌套资源,UserApplication
因此当我在UserApplicationsController
我构建响应中的新操作时,根据问题的数量,我可以f.fields_for
在新表单中使用。当它呈现时,我希望嵌套响应具有单选按钮,这些按钮具有答案的 id。因此,当提交表单时,嵌套响应会收到所选答案的 id。我只是想不出最好的方法来做到这一点。目前我正在这样做:
用户应用控制器
def new
@user_application = UserApplication.new
@questions = Question.all
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user_application }
end
end
新形式
= form_for @user_application do |f|
- @questions.each_with_index do |question, idx|
= question.content
.control-group
.controls
= select_tag "user_application[responses_attributes][#{idx}][answer_id]", options_for_select(question.answers.map {|u| [u.content,u.id]})
这感觉有点 hacky,因为当用户编辑应用程序时,之前答案的选择框没有被选中。我试图尽可能地解释我的问题。如果有人能理解我想要做什么,那么任何帮助都将不胜感激!如果您需要知道什么,请询问!
谢谢
托尼