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

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

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

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Q&A

解決済

1回答

503閲覧

前のページのURLを投稿フォームで取得する方法

higahigashiu

総合スコア13

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

0グッド

0クリップ

投稿2019/04/12 10:26

前提・実現したいこと

rubyでサービスの開発を行っています。

フォームページの前のページのURLのIDを取得して、フォームページの保存時に、同じDBに保存するやり方を教えて頂けると大変嬉しいです。

具体的に

ある記事(spot)に、投稿(post)を行い、紐付けたいと考えています。
DB上は、spotのid(URL)に表示されているものを、postの投稿フォームで取得して
PostDBのartcle_idカラムに保存したいです。

Ruby

1posts/controller.rb 2 3def new 4 @post = Post.new 5 end 6 7def create 8 @post = Post.new(post_params) 9 @post.user_id = current_user.id 10 11 12 respond_to do |format| 13 if @post.save 14 format.html { redirect_to @post, notice: 'Post was successfully created.' } 15 format.json { render :show, status: :created, location: @post } 16 else 17 format.html { render :new } 18 format.json { render json: @post.errors, status: :unprocessable_entity } 19 end 20 end 21 end

ruby

1views/spots/show.html.erb 2 3<p id="notice"><%= notice %></p> 4 5<p> 6 <strong>Spot name:</strong> 7 <%= @spot.spot_name %> 8</p> 9 10<p> 11 <strong>Content:</strong> 12 <%= @spot.content %> 13</p> 14 15<%= link_to 'Edit', edit_spot_path(@spot) %> | 16<%= link_to 'Back', spots_path %> 17<%= link_to '募集する!', new_post_path %> 18

現在の状況

記事の詳細(show)画面に、投稿する(post/new)のリンクを貼っている状態です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

情報が少し足りないので憶測ではありますが、
パスが問題なのではないかと思いました。
spotのshowページの後に、postのnewページがあるとのことですので、
以下のようなパス(URL)が生成されればいいと思います。

Rails

1spots/1/post/new

こうすれば「どのspotに対するpostのnew(投稿)なのかというのがわかると思います。
このパスに含まれる"1"はspotのidです。
パスに含ませれば、params[:id]で取得することができます。

パスはルーティングで以下のようにすれば上手くいくのではないでしょうか。

Rails

1resouce :spots do 2 resouce :post 3end 4//->spots/post/new 5//resouceが単数形だとURLにidを含まない

Rails

1resouces :spots do 2 resouce :post 3end 4//->spots/:id/post/new 5//resouceが複数形だとURLにidを含む

こうしてみて、ターミナルで
rake routes
としてみてください。
上記のようなパスが生成されていたら成功です。

投稿2019/04/12 11:29

編集2019/04/12 11:31
takuan1108

総合スコア56

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問