🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Devise

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

Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

Q&A

1回答

874閲覧

んこうrails URLを/ユーザー名/posts/記事の:idにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Devise

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

Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/12/22 16:44

編集2021/01/13 08:57

deviseと投稿機能を実装しています。

ユーザーごとの投稿の結びつけなどはできており、今回の目的は、現状の投稿した記事のURLにしたいと考えています。

調べたり、いろいろ試したのですが、実装できなかったので、詳しくわかる方に教えていただきたいです。

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

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

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

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

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

guest

回答1

0

get ':username/posts/:id' => 'posts#show'

では行きませんか?

投稿2020/12/22 22:50

winterboum

総合スコア23567

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

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

退会済みユーザー

退会済みユーザー

2020/12/22 23:42

その場合、resources :postsはどのように書けばいいですか?
winterboum

2020/12/23 00:08

その後ろに書けば、干渉しません。
退会済みユーザー

退会済みユーザー

2020/12/23 02:18

そうした場合、/:username/posts/:id' と/posts/:id'の両方でアクセスできてしまうのですが、どうすればいいですか?
退会済みユーザー

退会済みユーザー

2020/12/23 02:45 編集

それから、get ':username/posts/:id' => 'posts#show'だと、URLを直接username部分に適当な英語や数字を入れても 適当な英語や数字/posts/:idで記事にアクセスできてしまうので、実装できていませんでした
winterboum

2020/12/23 04:10

両方でアクセスできるのがまずかったら、 except: で showをはじくですね。 それは、action show で弾いてください。 DBの検索にて id しか見ていないでしょ。
退会済みユーザー

退会済みユーザー

2020/12/25 03:58 編集

except: で showをはじく件は、 その通りでした。 action show で弾くのはどうするのでしょうか? 知識不足で申し訳ございません、、
winterboum

2020/12/23 09:13

params[:id] のみでDBから取り出すのではなく、 params[:username] も条件に入れてください。 joins(:user).where("users.user_name = ?",params[:user_name)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問