1
1

More than 3 years have passed since last update.

【Ruby On Rails】ネストした状態で、link_toメソッド内Prefixの後に書く括弧内の記述

Last updated at Posted at 2020-11-15

すみません。完全なる備忘録です。。笑

前提

show.html.erb
  <% @fuga_events.each do |event| %>
  ----------------------------------------
    <ul>
      <div>
        <%= "名前:#{event.hoge.name}" %>
      </div>
      <div>
        <%= "アプリ:#{event.hoge.app_name}" %>
      </div>
      <div>
        <%= "開始日:#{event.started_at}"%>
      </div>
      <div>
        <%= "終了日:#{event.finished_at}" %>
      </div>
      <div>
        <%= "todo:#{event.todo}" %>
      </div>
      <div>
        <%= "場所:#{event.place}" %>
      </div>
      <div>
        <%= "見込:#{event.expected_reward}" %>
      </div>
      <div>
        <%= "報酬:#{event.reward}" %>
      </div>
    </ul>
    <div>
      <%= link_to "編集する", edit_hoge_fuga_event_path(), method: :get %>
      <%= link_to "削除する", hoge_fuga_event_path(), method: :delete %>
    </div>
  <% end %>

今回は、()内に渡したいparameterのid(キー)に相当するものを記述したい。
上記では、次の様にhogeが親でfuga_eventsが子のネスト状態となっている。

routes.rb
(前略)

    resources :hoges, except: [:index] do
      resources :fuga_events, except: [:index]
    end

(後略)

実際に、link_toメソッド内に記述されているPrefix(パス)、今回で言うとedit_hoge_fuga_event_pathとhoge_fuga_event_pathの後の括弧内にはどの様な記述が必要となるでしょうか。

書き方

show.html.erb
<%= link_to "編集する", edit_hoge_fuga_event_path(event.papa_id, event.id), method: :get %>
<%= link_to "削除する", hoge_fuga_event_path(event.papa_id, event.id), method: :delete %>

編集(editアクション)と削除(destroyアクション)機能には、それぞれ(event.papa_id, event.id)を記述しました。

考え方

私は赤色がネストの親、青色がネストの子を表していて、それぞれに対応するキーを記述する と考えました。

<%= link_to "編集する", edit_ hoge _ fuga_event _path ( event.papa_id , event.id ), method: :get %>

<%= link_to "削除する", hoge _ fuga_event _path ( event.papa_id , event.id ), method: :delete %>

気付き

決してこの様な書き方が必ずではありません。結局、考え方としては、パスの後に書く括弧内ではどの様なidが渡されるかを指定して書いてあげることが重要であると気がつきました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1