初心者です。今progateを参考にサイトを作っています。
誰でもファンクラブが作れるというものでユーザーがファンクラブを作成し、ファンクラブの中でコンテンツを投稿するときにファンクラブのidをDBに保存したいのですがidがnilのままになってしまいます。自分でなんとかしようと色々調べてみたのですが解決しませんでした。
どなたかご教授いただけないでしょうか。
fc_contents/index.html.erb
ruby
1<% @post.contents.each do |content| %> 2<li> 3 <%= content.content_title %> 4</li> 5<li> 6 <%= link_to(content.content_body, "/fc_content/#{content.id}") %> 7</li> 8<li> 9 <%= content.created_at %> 10</li><br> 11 12<% end %> 13<li> 14 <!-- リンクにファンクラブのidを入れる --> 15<%= link_to("コンテンツを投稿する", "/fc_contents/new/#{@post.id}") %> 16</li> 17
fc_contents_controller.rb
class FcContentsController < ApplicationController def index # @enters = Enter.find_by(id: params[:id]) @post = Post.find_by(id: params[:id]) @contents = FcContent.all end def show @content = FcContent.find_by(id: params[:id]) @post = @content.post end def new @content = FcContent.find_by(id: params[:id]) end def create # fc_idカラムも新しく入れる。fc_idは現在のpost.idにする @post = Post.find_by(id: params[:id]) @content = FcContent.new(content_title: params[:content_title], content_body: params[:content_body], user_id: current_user.id, fc_id: params[:id]) @content.save # リダイレクトの後にpost.idがついたurlに戻りたい redirect_to(root_path) end end
models/fc_content.rb
ruby
1class FcContent < ApplicationRecord 2 # validates :fc_id,{presence: true} 3 4 # belongs_to :post 5 def post 6 return Post.find_by(id: self.id) 7 end 8end 9
fc_contents/new.html.erb
ruby
1<%= form_tag("/fc_content/create") do %> 2 3 <input name="content_title" placeholder="タイトル" type="text"> 4 <textarea name="content_body" placeholder="本文" type="text"></textarea> 5 6 7 <input type="submit" value="投稿する"> 8<% end %> 9
routes.rb
ruby
1Rails.application.routes.draw do 2 3 # ============fc_content.controller ============== 4 get 'fc_contents/index/:id' => "fc_contents#index" 5 get "fc_contents/new/:id" => "fc_contents#new" 6 get "fc_content/:id" => "fc_contents#show" 7 post "fc_content/create" => "fc_contents#create" 8 9end 10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。