説明:私はtoy_appチュートリアル以下のい:のコンテンツを表示する編集、ユーザショーのページ:https://www.railstutorial.org/book/toy_appRuby on Rails Associationの使い方は?
を私はセクションの下で練習の質問と問題2.3.3
質問を持っていますユーザの最初のマイクロポスト。 (ファイル1.1の他の内容に基づいて構文を推測するには、技術的な高度化(ボックス1.1)を使用してください。/ users/1にアクセスして確認してください。
私のの中にapp/views/users/show.html.erbファイルがあります。 @ micropost.contentオブジェクトを使用して、ユーザーに関連付けられたコンテンツを表示しようとしました。ユーザー#で
<p id="notice"><%= notice %></p>
<p>
<strong>Name:</strong>
<%= @user.name %>
</p>
<p>
<strong>Email:</strong>
<%= @user.email %>
</p>
<p>
<strong>Content:</strong>
<%= (<%= @micropost.content %>) %>
</p>
<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>
結果
NoMethodErrorは皆無のため
未定義のメソッド 'コンテンツ' を示していますNilClass
結論
の投稿/ビュー/ユーザーの投稿にのフォームを作成する必要がありますか?または、:コンテンツを私のmicroposts_controller.rb内のプライベート 'micropost_params'メソッド内のオブジェクトに設定しているので、コントローラ間のオブジェクトデータ転送が許可されません。
私は連想が働いていることを確認するために、コンソール内のコードの次の行をテストし:
first_user = User.first
first_user.microposts
micropost = first_user.microposts.first
micropost.user
私は私へのアクセスを提供します私のユーザコントローラファイル内のメソッドを定義する必要があると感じて:内のコンテンツオブジェクト私のMicroPostsクラス。
コントローラの 'show'メソッドに' @micropost'変数を設定していますか? –
これは、 '@ user.micropost.content'でなければなりません。コントローラ内で' @micropost = User.first.microposts'をエクスポートし、ビューで配列を処理してください。 – joaumg
@joaumg:実際にはどちらも動作しません。それは別のものでなければなりません:) –