零级错误

时间:2012-04-19 17:04:21

标签: ruby-on-rails haml

我想根据具体需要显示相关产品,只需根据类别显示图片和名称 这是mu控制器

class RelatedneedsController < ApplicationController

  def index
    @relatedneeds = RelatedNeed.all
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @relatedneeds }
    end
  end 

  def show
    s1 = '@need.category.name'
    s2 = '@relatedneed.category.name'

    if s1.eql?(s2)
      @relatedneed = relatedneed.find(params[:id])

      respond_to do |format|
        format.html # show.html.erb
        format.json { render json: @need }
      end
    end
  end

  def get_name
      @relatedneed.name
  end
end

这是我的模特

class Relatedneed
  include Mongoid::Document
  include Mongoid::Paperclip

  mapping do
    indexes :name 
  end

  field :name, type: String

  belongs_to :category
  belongs_to :user
end

这是show.haml文件

%h1
  %b= @need.name

#container{:style => "width:1000px"}
    #desc{:style => "height:400px;width:400px;float:left;"}
        =image_tag @relatedneed.photo.url(:normal)

这是我的index.haml文件

%h1= @relatedneed.get_name

#container{:style => "width:1000px"}
    #desc{:style => "background-color:#EEEEEE;height:400px;width:400px;float:left;"}
    = link_to "Check Need", new_need_path

我不知道他们是否缺少了什么,我得到了这个错误 RelatedneedsController #index

中的NoMethodError

未定义的方法`键?'为零:NilClass

1 个答案:

答案 0 :(得分:0)

您的index.haml有@relatedneed.get_name,但您尚未在控制器中设置@relatedneed,只有@relatedneeds。它就这么简单吗?

另外,你在控制器中的show方法对我没有意义。您已将实例变量放在字符串中!您需要首先通过模型使用数据库查询设置实例变量。您的get_name方法看起来也属于模型,而不是控制器。