初心者です。ruby on rails 5 でアプリケーションを作っています。
掲示板を作っています。QuestionモデルとAnswerモデルをアソシエーションさせ、それぞれquestions_controller.rbとanswers_controller.rbで制御しています。
このAnswerモデルに、別で作った管理画面からも投稿できるよう、app/controllers/kanrigamen/answers_controller.rbでanswersテーブルに値を入れようとしています。
ruby
1# app/views/kanrigamen/keijibans/show.html.erb 2 3<h1>Q. <%= @question.title %></h1> 4 5<section class="paragraph"> 6 7 <p><%= @question.nickname %>さんからの投稿</p> 8 <p><%= @question.content %></p> 9 10 <%= form_tag("/kanrigamen/keijibans/#{@question.id}/answers", method: :post) do %> 11 <textarea cols="30" name="text" placeholder="コメントする" rows="2"></textarea> 12 <input type="submit" value="コメントする"> 13 <% end %> 14 15</section>
ruby
1# app/controllers/kanrigamen/keijibans_controller.rb 2 3class Kanrigamen::KeijibansController < ApplicationController 4 5 def show 6 @question = Question.find(params[:id]) 7 end 8 9end 10
ruby
1# routes.rb 2 3 namespace :kanrigamen do 4 resources :keijibans do 5 resources :answers, only: [:create] 6 end 7 end
rails routes で確認すると、
kanrigamen_keijiban_answers
POST
/kanrigamen/keijibans/:keijiban_id/answers(.:format)
kanrigamen/answers#create
となります。
ruby
1# app/controllers/kanrigamen/answers_controller.rb 2 3class Kanrigamen::AnswersController < ApplicationController 4 5 def create 6 Answer.create(text: answer_params[:text], question_id: answer_params[:keijiban_id] 7 end 8 9 private 10 def answer_params 11 params.permit(:text, :keijiban_id) 12 end 13 14end
ruby
1# app/models/answer.rb 2 3class Answer < ApplicationRecord 4 belongs_to :question 5 belongs_to :user 6 belongs_to :administrator 7end 8
これでアプリケーションを動かすと、普通に、 app/views/kanrigamen/answers/create.html.erb が表示されます。エラー画面なども表示されません。binding.pryで確認すると、パラメーターも引き渡せてしまう。
わかりづらい質問になってしまったかもしれません。足りない情報がありましたら追記しますのでご指摘ください。
何卒よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。