0

Profile scaffold (および Devise で作成された User) があり、各ユーザーには 1 つのプロファイルがあり、application.html.erb から単一のユーザー プロファイルへのリンクを表示したいと考えています。

問題は、/views/profiles/index.html.erb では機能するが、/layouts/application.html.erb では機能しないこのコードです。

<td><%= link_to 'Show', profile %></td>
<td><%= link_to 'Edit', edit_profile_path(profile) %></td>

私は何が欠けていますか?

4

1 に答える 1

1

アプリケーションレイアウトでは、profile変数が常に設定されているとは限りません。プロファイル#indexアクションでは、ビューに次のようなコードがあると思います。@profiles.each do |profile|

これは、プロファイルのコレクションを取得してそれらを反復処理し、各プロファイルオブジェクトをブロック(この場合はリンクのレンダリング)に渡します。

説明している場合、任意のページから現在のユーザーのプロファイルへのリンクを表示する場合は、最初に現在のユーザーがログインしているかどうかを確認してから、その現在のユーザーのプロファイルメソッドを呼び出す必要があります。それで:

<% if current_user %>
  <%= link_to 'Edit Profile', edit_profile_path(current_user.profile) %>
<% end %>

より一般的には、引数を必要とするパスヘルパーを使用する場合は、定義されている変数を渡していることを確認する必要があります。

于 2012-12-31T05:50:14.587 に答える