0

私が抱えていた問題にもかかわらず、簡単に答えられるはずの簡単な質問:

送受信されたメッセージ(「イントロ」)を表示するメッセージ(「イントロ」)タブを備えたシンプルなRailsアプリがあります。メッセージがユーザーからユーザーに適切にルーティングされており、メッセージの内容がユーザーの受信ボックスに正常に表示されています。ただし、メッセージ自体の横にメッセージに関連付けられているユーザーの名前を表示するのに問題があります

私はユーザーモデルを持っています:

class User < ActiveRecord::Base
    attr_accessible :name, :email, :one_liner, :password, :password_confirmation
    has_secure_password

    has_many :sent_intros, foreign_key: "sender_id", dependent: :destroy, class_name: "Intro"
    has_many :received_intros, foreign_key: "receiver_id", dependent: :destroy, class_name: "Intro"

    has_many :receivers, through: :sent_intros, source: :receiver
    has_many :senders, through: :received_intros, source: :sender

        ...

、イントロ(メッセージ)モデル:

class Intro < ActiveRecord::Base
  attr_accessible :content, :receiver_id, :sender_id

  belongs_to :sender, class_name: "User"
  belongs_to :receiver, class_name: "User"

  ...

ユーザーコントローラーからの関連コードは次のとおりです。

class UsersController < ApplicationController
  before_filter :signed_in_user, only: [:index, :edit, :update, :destroy]
  before_filter :correct_user, only: [:edit, :update]
  before_filter :admin_user, only: :destroy

  def show
    @user = User.find(params[:id])
    @intro = Intro.find(params[:id])

    @sent_intros = current_user.sent_intros.paginate(page: params[:page])
    @received_intros = current_user.received_intros.paginate(page: params[:page])
  end
  ...

私の.erbショーページ:

<% provide(:title, @user.name) %>
<div class="row">
    <aside class="span4">
        <section>
            <h1>

                <%= @user.name %>
            </h1>
        </section>
    </aside>
    <div class="span8">
        <% if@user.received_intros.any? %>
            <h3>Received intros (<%= @user.received_intros.count %>)</h3>
            <ol class="intros">
                <%= render @received_intros %>
            </ol>
            <%= will_paginate @received_intros %>
        <% end %>

        <% if@user.sent_intros.any? %>
            <h3>Sent intros (<%= @user.sent_intros.count %>)</h3>
            <ol class="intros">
                <%= render @sent_intros %>
            </ol>
            <%= will_paginate @sent_intros %>
        <% end %>
    </div>
</div>

したがって、このページの<%= render @received_intros%>と<%= render @sent_intros%>の行に関心があります

現在、次のように表示されます(関連付けられたユーザーのないイントロコンテンツ)。

ここに画像の説明を入力してください

それらのユーザー名のプレフィックスをそれぞれのイントロに付けるにはどうすればよいですか?ありがとう!

4

1 に答える 1

0

コントローラアクションでユーザーと同じIDに基づいてイントロを検索しているようです。2番目に検索されたため、@user変数を上書きしています。コードは次のとおりです。

@user = User.find(params[:id])
@intro = Intro.find(params[:id])

おそらく、その2行目をparams [:intro_id]のようなものにしたいのではないかと思いますが、そのページにリンクしているビューコードと、場合によってはルートファイルが表示されない限り完全にはわかりません。

于 2012-07-04T18:29:37.687 に答える