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%>
質問/問題:
機能的な問題とデザイン上の問題があります。
私の現在のコードは壊れており、check_box をクリックしてからフォームを送信すると、フォームが返されます。
ボタンにはcheck_boxがありますが、ボタン自体をチェックボックスとして機能させたいです。
私はこのレールキャストを見てきました: http://railscasts.com/episodes/52-update-through-checkboxes しかし、私の場合、コントローラーで追加のアクションを実行する必要があるとは思いませんでした。お知らせ下さい。