以下のエラーが出ていますが、その原因を理解したいと考えています。お力を貸して頂ければと思います。
問題のエラー
今回は、nilが出ていますので、値が入っていないということと理解しています。しかし、それは、simple_form_forの中で、今後formに値をいれることから、ある種当然と考えています。この場合の解決法を勉強したいと考えています。
現状
現在、Q&Aサイトを練習として作成しています。イメージは、テラテイルではなく、弁護士ドットコムのような、特定のadviserがuserにアドバイスを遅れるQ&Aサイトです。
現在は、このadviserの管理画面を作成しています。この管理画面に、関連するquestionが表示され、
そこで、answerを作成できるようにしています。そのanswerがuserが投稿したquestionの下に表示されること
になります。
ルート
namespace :adviser do get '/advisers' => "application#index", as: "advisers_root" resources :advisers, only: [:show] resources :questions, only: [:index, :show] resources :answers, only: [:index, :new, :create, :show, :edit, :update, :destroy] end
モデル(adviser)
has_many :answers, dependent: :destroy
モデル(answer)
belongs_to :adviser, foreign_key: "adviser_id"
View
<div class="answer_form"> <%= simple_form_for [:adviser, @answer] do |f| %> <%= f.input :question_id, :as => :hidden, :input_html => { :value => @question.id } %> <%= f.input :content, as: :text, :input_html => { :class => 'question-content', :rows => '10' } %> <!-- promptは、指定したオプションを先頭に追加する。ここでは、labelが先頭に表示される。 --> <%= f.button :submit, class: "btn btn-primary" %> <% end %> </div>
上記の@ansewrをコントローラーで定義しています。
Controller
def show @question = Question.find(params[:id]) @answer = current_adviser.answers.build end
※advierモデルはdeviseで作成していますので、current_adviserヘルパーを使用しています。
@answer = current_adviser.answers.buildでエラーを指摘しており、
どうしたものか、原因を理解したいと考えています。
追加ですが、@answer = Answer.newであれば、エラーは消えます。しかし、モデルは、adviserとanswerはアソシエーションで結んでいますので、@answer = current_adviser.answers.buildが正しいのではという考えを持っています。
どうぞ宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。