-1

我有两个模型,用户和引脚。

在我的 Pins 模型中,我有一个索引视图,可以在其中渲染所有引脚的一部分:

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 模型,我有一个显示视图,我想在其中呈现部分内容,以便为我提供仅包含当前用户引脚的列表:

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

_mypin.html.erb :user.pin.contentuser.pin.privacy

我的用户控制器基本上是:

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

我不断收到以下错误:NoMethodError in Users#show Showing .../app/views/users/show.html.erb where line #11 raise: undefined method `mypin' for User:0x00000103d2c130

我需要两个部分保持分开(因为我开始在每个页面中呈现不同的东西,即隐私等)......有没有办法做类似 <%= render :partial => "mypin", @user.pins %> ?

4

1 回答 1

3

User#mypin似乎没有在您的User模型中定义。

您应该像这样定义模型和模型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 回答