Pins中的NoMethodError #index - 未定义的方法`image'为零:NilClass

时间:2015-03-30 09:59:19

标签: ruby-on-rails ruby

我在我的应用的 index.html.haml 页面中收到undefined method 'image' for nil:NilClass

然而,在 show.html.haml 页面上,代码运行正常,图像呈现完美。

我正在关注本教程https://www.youtube.com/watch?v=abcnfFS_DS8,这对他来说非常有用。请在48:16查看。 我经历了好几次,但我仍然无法弄清楚我错过了什么。

这是错误:

  

显示/home/ubuntu/workspace/app/views/pins/index.html.haml其中   第2行提出:

     

nil的未定义方法`image':NilClass

     

提取的来源(第2行):

1 - @pins.each do |pin|
2     = link_to (image_tag @pin.image.url(:medium)), pin
3     %h2= link_to pin.title, pin

这是我的代码:

index.html.haml

- @pins.each do |pin|
    = link_to (image_tag @pin.image.url(:medium)), pin
    %h2= link_to pin.title, pin

show.html.haml

= image_tag @pin.image.url(:medium)
%h1= @pin.title
%p= @pin.description
%p
    Submitted by
    = @pin.user.email

pins_controller.rb

before_action :find_pin, only: [:show, :edit, :update, :destroy]

def index
    @pins = Pin.all.order("created_at DESC")
end

def show
end

private

def pin_params
   params.require(:pin).permit(:title, :description, :image) 
end

def find_pin
    @pin = Pin.find(params[:id])
end

pin.rb

belongs_to :user

has_attached_file :image, styles: { medium: "300x300#"}
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/

我设法修复了其他NoMethodErrors,但我无法弄清楚为什么我会得到这个。如果有人可以解释为什么我会收到这个特定的错误,那真的很棒。

1 个答案:

答案 0 :(得分:0)

我从评论中得到了答案。

@Sontya写道:

此行有错误

= link_to (image_tag @pin.image.url(:medium)), pin 

将其更改为

= link_to (image_tag pin.image.url(:medium)), pin