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

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

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

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

Q&A

1回答

1403閲覧

Rails URL直打ちで詳細画面へ行かない様にしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2021/05/21 08:14

編集2021/05/24 02:02

Railsで簡単な掲示板アプリを作成しています。
localhost:3000/projects/2/tasks/1のようにURLを入力すると、projectに紐づいていないTaskの詳細情報が確認できてしまうことが分かりました。
URL直打ちで詳細画面へ行かない様にしたいのですが、どの様にすれば良いか分からず詰まっております。

class TasksController < ApplicationController before_action :set_project before_action :set_task, only: %i[show edit update destroy] def index @tasks = @project.tasks end def show; end def new @task = Task.new end def edit; end def create @task = Task.new(task_params) if @task.save redirect_to [@project, @task], notice: 'Task was successfully created.' else render :new end end def update if @task.update(task_params) redirect_to [@project, @task], notice: 'Task was successfully updated.' else render :edit end end def destroy @task.destroy redirect_to project_tasks_url, notice: 'Task was successfully destroyed.' end private def set_project @project = Project.find(params[:project_id]) end def set_task binding.pry @task = Task.find(params[:id]) end def task_params params.require(:task).permit(:title, :status, :deadline, :completion_date, :description).merge(project_id: params[:project_id]) end end

show

1<p id="notice"><%= notice %></p> 2<p> 3 <strong>Title:</strong> 4 <%= @task.title %> 5</p> 6<p> 7 <strong>Status:</strong> 8 <%= @task.status %> 9</p> 10<p> 11 <strong>Deadline:</strong> 12 <%= @task.deadline.strftime('%Y-%m-%d %H:%M') if @task.deadline? %> 13</p> 14<p> 15 <strong>Completion date:</strong> 16 <%= @task.completion_date %> 17</p> 18<p> 19 <strong>Description:</strong> 20 <%= @task.description %> 21</p> 22<%= link_to 'Edit', edit_project_task_path(@task.project_id, @task) %> | 23<%= link_to 'Back', project_tasks_path %>

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

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

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

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

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

maisumakun

2021/05/21 08:21

先程の質問で解決したのではなかったのですか?
mather

2021/05/21 09:56

コードも前回の質問で修正した分が元に戻ってますね。 def set_task @task = @project.tasks.find(params[:id]) #変更前のコード @task = Task.find(params[:id]) end
guest

回答1

0

show を実装してください。

投稿2021/05/21 08:21

mather

総合スコア6753

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

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

退会済みユーザー

退会済みユーザー

2021/05/21 08:37

どの様に書けば良いのでしょうか? if文で書くと思っているのですが…
mather

2021/05/21 09:22

そう感じるのであれば、まずは書いてみてください。 具体的に何がわからないのかが明確にならないまま答えだけ教えてもらっても理解できず自分では実装できないままです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問