1

我正在努力尝试在 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%>

问题/问题:

我有一个功能问题和一个设计问题。

  1. 我当前的代码已损坏,单击复选框然后提交表单会将表单呈现给我。

  2. 按钮上有一个复选框,但我希望按钮本身用作复选框。

我看过这个 railscast:http: //railscasts.com/episodes/52-update-through-checkboxes 但认为我不需要在控制器中为我的案例做额外的操作。让我知道。

4

0 回答 0