【问题标题】:Setting up a rails partial设置部分导轨
【发布时间】:2013-09-03 16:16:01
【问题描述】:

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

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

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#show 显示 .../app/views/users/show.html.erb 其中第 11 行提出: 用户未定义的方法“mypin”:0x00000103d2c130

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

【问题讨论】:

  • 你的 User 和 Pin 模型是什么样的?
  • 你有没有阅读错误信息?
  • 我的用户和 pin 模型与 has_many 和 belongs_to 有正确的关联,如下所示。

标签: ruby-on-rails ruby-on-rails-3 model-view-controller partial-views


【解决方案1】:

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

您应该在 User 模型和 Pin 模型之间定义 has_many 关系,如下所示:

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 %>

【讨论】:

  • 但我确实在我的 User 和 Pin 模型中定义了 has_many 和 belongs_to(正如你所拥有的那样)。此外,我需要将部分保持分开,因为我正在为所有 pin 页面与用户 pin 页面呈现不同的值...
  • 我确实按照您的建议更新了我的用户控制器以说@pins = @user.pins。现在我收到错误:未定义的方法`mypin'
  • 有没有办法像 "mypin", @user.pins %> ?
  • 像这样:&lt;%= render partial: 'mypin', collection: @user.pins %&gt;
猜你喜欢
  • 2012-10-14
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
相关资源
最近更新 更多