-2

簡単な質問:ビューにユーザーIDの代わりにユーザー名(私の場合は電子メール)を表示したいので、次のコードをビューに記述します。

<%= User.find(post.user_id).Email %>

しかし、契約MVCを破らないでください。このコードは、モデルに移動する必要がありますか?

4

1 に答える 1

1

まず、そのような大文字の電子メールを使用することはできません。クラス名ではなく、メソッド(小文字)の電子メールを呼び出す必要があります。

<%= User.find(post.user_id).email %> 

おそらく、コントローラーで@user = User.find(@ post.user_id)を検索したい場合は、ビューで@ user.emailを実行できます...または、コントローラーで@user_emailを設定することをお勧めします。ビューからモデルを実際に呼び出すべきではありません。コントローラはモデルと通信し、データをビューに渡す必要があります。

だから、コントローラーでこのようなもの:

@post = Post.find(params[:id])
@user_email = @post.user.email 

その後、ビューであなたはただすることができます

<%= @user_email %>
于 2013-03-26T05:24:34.177 に答える