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 の質問と質問の has_many の回答に分ける必要はないと判断しました。質問は調査ごとに静的であるため、私の意見では、各調査は他の形式であるかのように、標準的な列のエントリのみが必要でした。

ということで、アンケートの質問はこんな感じにしました(サンプルアンケート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. 私の現在のコードは壊れており、check_box をクリックしてからフォームを送信すると、フォームが返されます。

  2. ボタンにはcheck_boxがありますが、ボタン自体をチェックボックスとして機能させたいです。

私はこのレールキャストを見てきました: http://railscasts.com/episodes/52-update-through-checkboxes しかし、私の場合、コントローラーで追加のアクションを実行する必要があるとは思いませんでした。お知らせ下さい。

4

0 に答える 0