質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1343閲覧

【初心者】現在のpost.idをDBに保存したいです

akiakiakirin

総合スコア13

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/09/08 03:11

初心者です。今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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

fc_contents/new.html.erb

<%= form_tag("/fc_content/create/#{@post.id}") do %> ・ ・ 省略

routes.rb

post "fc_content/create/:id" => "fc_contents#create"

fc_contents_controller.rb

def create @post = Post.find_by(id: params[:id]) # fc_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

form_tagにidを含ませることで取得できました!!!

投稿2018/09/08 04:52

akiakiakirin

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問