未定义的局部变量或方法'gallery'

时间:2013-02-05 04:27:02

标签: ruby-on-rails ruby-on-rails-3

好的,所以我正在重建一个旧的照片库管理应用程序,我在几年前在ROR 1中构建并运行到一些编码困难,因为我生锈了,显然事情已经发生了变化。我的第一个问题是我在尝试调用页面时遇到了未定义的局部变量或方法“库”错误。令我困惑的是,我有'gallery'控制器中定义的方法,但我想知道我是否完全错过了一些东西。以下是一些相关的代码片段,首先是我的index.html.erb页面:

<% @photos.each do |photo| %>

<div>
<%= image_tag(photo.thumb_url) %>
<%= link_to 'Show', gallery %><br/>

</div>
<% end %>
<p><%= will_paginate @photos %></p>

我的画廊控制员:

class GalleryController < ApplicationController
  skip_before_filter :authorize
  # GET /gallery
  # GET /gallery.xml
  def index
    @photos = Photo.all
    @photos = Photo.paginate :page=>params[:page], :order=>'date desc',
    :per_page => 2

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @gallery }
    end
  end

  # GET /gallery/1
  # GET /gallery/1.xml

  def show
    @photo = Photo.find(params[:id])

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

我的错误:

undefined local variable or method `gallery' for #<#<Class:0x111127b38>:0x1112d5700>

我应该澄清“照片”是需要登录并包含所有字段/数据库/记录数据的管理部分。使用以下行我没有问题:

<%= link_to 'Show', photo %><br/>

它会显示正确的记录和查看页面,但是在站点的管理部分(需要登录)。希望这是有道理的。

2 个答案:

答案 0 :(得分:2)

我没有看到您定义变量gallery,这就是您的错误消息告诉您的内容:gallery在您的视图中未定义。


更新您的评论:

仅仅因为您希望照片转到图库控制器并不意味着您只需输入“图库”即可获得结果。这是一个编程语言,其中单词具有含义,您所做的只是引用未定义的变量。这个,就像这样,在任何版本的Rails中都有效。

如果要将照片路由到Gallery控制器,可以使用自动生成的_path帮助程序;具体来说,gallery_path,它接受​​一个参数,用于显示“画廊”(实际上是一张照片)的ID:

<%= link_to 'Show', gallery_path(photo.id) %><br/>

答案 1 :(得分:0)

尝试使用以下内容替换link_to方法:<%= link_to 'Show', :controller => "photos", :action => :your_method, :params1 => gallery %>

然后在您的PhotoController中,您可以使用:@my_gallery = params[:params1]来访问您的图库项目。

有关路线的一些文件:

http://guides.rubyonrails.org/routing.html