kyopa’s blog

自分用プログラミングアウトプット

パスの書き方

 <%= link_to "目標設定", new_target_path %>
<%= link_to "目標詳細", target_path(@target) %>
<%= link_to "目標変更", edit_target_path(@target) %>

 

こんなふうに書くとエラーがでる・・・

記述は間違えていない。

 

 

<% @target.each do |target| %>
<%= link_to "目標設定", new_target_path %>
<%= link_to "目標詳細", target_path(target.id) %>
<%= link_to "目標変更", edit_target_path(target.id) %>
<% end %>

 

これだとエラーでないけど、投稿した数分、目標設定、目標詳細、目標変更が記述される・・・。

 

 

<%= link_to "目標設定", new_target_path %>
<%= link_to "目標詳細", target_path(@target) %>
<%= link_to "目標変更", edit_target_path(@target) %>

 

どうにかこれで記述したい。

 

def top
@target = Target.all
end

ターゲットコントローラーの記述を変更

def top
@target = Target.find_by(user_id: current_user.id)
end

 

find_byを使用

 

これで解決した。

 

 

 

findとfind_byの違い

 

find

findは「id」によってデータを取得します

 

find_by

特定の条件にマッチした最初のレコードを検索します。

取得できるデータは1件のみに可能