seed.rbを使用して.txtファイルからロードしたクラブとアクティビティ(バンドまたは野球)のリストがあります。ビューにチェックボックスのリストを作成して、ユーザーが自分が参加しているアクティビティを確認できるようにしたい。アクティビティのリストの反復を作成するのに問題があり、「nil:NilClassの未定義のメソッド`each'」エラーが表示されます。私のモデルはアクティビティと呼ばれています。
私のコントローラーには@activities=Activity.allと
私の見解には<%@ activities.each do |a|があります %>
しかし、その行は機能しません。アクティビティモデルには、役立つ場合は:nameという文字列属性があります。誰かが私が試すことができるアイデアを持っていますか?ありがとう!
ルート。rb
CollegeConnection::Application.routes.draw do
devise_for :users
resources :quizzes
resources :users
resources :majors
resources :activities
root :to => "users#welcome"
end
quiz controller:
class QuizzesController < ApplicationController
before_filter :authenticate_user!
# GET /quizzes
# GET /quizzes.json
def index
@quizzes = Quiz.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @quizzes }
end
end
# GET /quizzes/1
# GET /quizzes/1.json
def show
@quiz = Quiz.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @quiz }
end
end
# GET /quizzes/new
# GET /quizzes/new.json
def new
@quiz = Quiz.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @quiz }
end
end
# GET /quizzes/1/edit
def edit
@quiz = current_user.quizzes.build(params[:id])
end
# POST /quizzes
# POST /quizzes.json
def create
@quiz = Quiz.new(params[:quiz])
@quiz.userName=current_user.name
@activities = Activity.all
respond_to do |format|
if @quiz.save
format.html { redirect_to @quiz, notice: 'Thank You for Taking the Quiz!.' }
format.json { render json: @quiz, status: :created, location: @quiz }
else
format.html { render action: "new" }
format.json { render json: @quiz.errors, status: :unprocessable_entity }
end
end
end
# PUT /quizzes/1
# PUT /quizzes/1.json
def update
@quiz = Quiz.find(params[:id])
respond_to do |format|
if @quiz.update_attributes(params[:quiz])
format.html { redirect_to @quiz, notice: 'Quiz was successfully updated.' }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @quiz.errors, status: :unprocessable_entity }
end
end
end
# DELETE /quizzes/1
# DELETE /quizzes/1.json
def destroy
@quiz = Quiz.find(params[:id])
@quiz.destroy
respond_to do |format|
format.html { redirect_to quizzes_url }
format.json { head :ok }
end
end
終わり
_form.html.erbクイズビュー
<%= form_for(@quiz, html: {class: "nice"}) do |f| %>
<% if @quiz.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@quiz.errors.count, "error") %>
prohibited this quiz from being saved:
</h2>
<ul>
<% @quiz.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :q1, "Current/Possible Major" %><br />
<%= f.collection_select(:q1, Major.all, :name, :name) %>
</div>
<div class="field">
<%= f.label :q2, "Activities" %><br />
<%= f.collection_select(:q2, Activity.all, :name, :name) %>
</div>
<% @activities.each do |a| %>
<%= a.check_box :active %>
<%= a.submit "Update" %>
<% end %>
<div class="field">
<%= f.label :q3 %><br />
<%= f.text_area :q3, class: 'input-text' %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
さて、私は部分的な解決策を見つけました:
<div class="field">
<%= f.label :q2, "Activities" %><br />
<% for activity in Activity.find(:all) %>
<div>
<%= check_box_tag(:q2, activity.name) %> <%=activity.name %>
</div>
<% end %>
</div>
すべてのチェックボックスの横に名前が表示されますが、q2(質問2のクイズ属性)の回答として値が設定されていません。チェックボックスタグに問題があると思います。f.check_boxを試しましたが、どちらも機能しません。何か助けはありますか?
エラー:
NoMethodError in Quizzes#new
Showing /Users/Daniel/Documents/cis196/CollegeConnection/app/views/quizzes/_form.html.erb
where line #24 is raised
undefined method `merge' for "Debate\n":String
Extracted source (around line #24):
21: <%= f.label :q2, "Activities" %><br />
22: <% for activity in Activity.find(:all) %>
23: <div>
24: <%= f.check_box(:q2, activity.name) %> <%=activity.name %>
25: </div>
26: <% end %>
27: </div>
Trace of template inclusion: app/views/quizzes/new.html.erb
Rails.root: /Users/Daniel/Documents/cis196/CollegeConnection
Application Trace | Framework Trace | Full Trace
app/views/quizzes/_form.html.erb:24:in `block (2 levels) in _app_views_quizzes__form_html_erb__435461842904466959_70320063188680'
app / views / quizzes / _form.html.erb:22:in each'
app/views/quizzes/_form.html.erb:22:in
block in _app_views_quizzes__form_html_erb__435461842904466959_70320063188680'app / views / quizzes / _form.html.erb:1:in _app_views_quizzes__form_html_erb__435461842904466959_70320063188680'
app/views/quizzes/new.html.erb:6:in
_app_views_quizzes_new_html_erb__735256988435リクエスト
パラメーター:
なしセッションダンプを表示
環境ダンプを表示
応答
ヘッダー:
なし
クイズモデル
Class Quiz < ActiveRecord::Base
belongs_to :user
validates :q1, :presence => true
validates :q2, :presence => true
validates :q3, :presence => true
serialize :q2
終わり