-1

ユーザーとピンの 2 つのモデルがあります。

私のピン モデルには、すべてのピンの部分をレンダリングするインデックス ビューがあります。

index.html.erb:<%= render @pins %>

_pins.html.erb :pin.content

私のピンコントローラーは基本的に次のとおりです。

def index
    @pins = Pin.all
    respond_to do |format|
      format.html # index.html.erb
    end
  end

上記では、レンダリングは正常に機能します。

ただし、私の User モデルには、パーシャルをレンダリングして現在のユーザーのピンだけのリストを表示するショー ビューがあります。

show.html.erb:<%= render @user.mypin %>

_mypin.html.erb :user.pin.contentおよびuser.pin.privacy

私のユーザーコントローラーは基本的に次のとおりです。

def show 
    @user = User.find(params[:id])
    @pins = Pin.all
end

次のエラーが発生し続けます: NoMethodError in Users#show .../app/views/users/show.html.erb where line #11 raise: undefined method `mypin' for User:0x00000103d2c130

2 つのパーシャルを分離したままにする必要があります (各ページで異なるもの、つまりプライバシーなどをレンダリングし始めるため) ... <%= render :partial => "mypin", @user.pins のような方法はありますか? %> ?

4

1 に答える 1

3

User#mypinUserモデルで定義されていないようです。

モデルとモデルhas_manyの間の関係を次のように定義する必要があります。UserPin

class User
  has_many :pins
end

class Pin
  belongs_to :user
end

@user = User.find(params[:id])
@pins = @user.pins
#=> will returns all user's pins

次に、ビューでそれを使用できます。

<%= render @pins %>
于 2013-09-03T16:19:22.257 に答える