我正在努力尝试在 rails 4 中创建和引导设计一个简单的调查。用户(客户)通过录音进行了许多调查。我们打算要求用户每隔一段时间填写一份全新的调查表,以便每个客户都有一个已完成调查的存档。我的模型如下所示:
class User < ActiveRecord::Base
has_many :recordings
has_many :surveys, through: recordings
#########
class Survey < ActiveRecord::Base
has_many :recordings
has_many :users, through: :recordings
#########
class Recording < ActiveRecord::Base
belongs_to :user
belongs_to :survey
可能的问题 #1:我决定不需要将调查分为调查 has_many questions 和 questions has_many answers。每个调查的问题都是静态的,因此,我认为每个调查只需要标准列条目,就好像它是任何其他形式一样。
因此,话虽如此,我对调查问题做了类似的事情(样本调查有 1 个问题)。
class Survey < ActiveRecord::Base
# ...
FAVORITE_FOODS = %w[pizza steak salad hotdogs pasta pancakes]
#....
def self.favorite_foods
FAVORITE_FOODS
end
然后在控制器中:
class Survey < ApplicationController
def new
@survey = current_user.surveys.build
@foods = Survey.favorite_foods
end
def create
@survey = current_user.surveys.build(survey_params)
if @survey.save
redirect_to surveys_path, notice: "Thank you for filling out our client survey."
else
flash[:notice] = "Your survey has not been completed."
render 'new'
end
end
#....standard crud for has_many
private
def survey_params
params.require(:survey).permit({:favorite_foods => []},....
end
然后最后在视图上:
<%= form_for [@user, @survey] do |f| %>
<div class="control-group">
<div class="controls">
<h5>What are your favorite foods?</h5>
<div class="btn-group"><h6>
<% @foods.each do |food| %>
<button class="btn" type="button" data-toggle="button"><%= check_box_tag "food_array[]", food %> <%= food %></button>
<% end %></h6><%= f.submit%>
问题/问题:
我有一个功能问题和一个设计问题。
我当前的代码已损坏,单击复选框然后提交表单会将表单呈现给我。
按钮上有一个复选框,但我希望按钮本身用作复选框。
我看过这个 railscast:http: //railscasts.com/episodes/52-update-through-checkboxes 但认为我不需要在控制器中为我的案例做额外的操作。让我知道。