0

さて、私は数年前にROR 1で作成した古いフォトギャラリー管理アプリを再構築していて、錆びていて状況が変わったように見えるため、コーディングの問題がいくつか発生しました。私の最初の質問は、ページを呼び出そうとすると、未定義のローカル変数またはメソッドの「ギャラリー」エラーが発生することです。私が混乱しているのは、「ギャラリー」コントローラーでメソッドが定義されていることですが、何かが完全に欠落しているのではないかと思います。関連するコードスニペットを次に示します。最初は私の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>

I should clarify that "Photos" is the admin section which requires login and contains all of the fields/database/record data. I have no problem using the following line:

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

Which brings up the correct record and viewing page, but in the admin section of the site (which requires login). Hopefully that makes sense.

4

2 に答える 2

2

変数を定義しているところはどこにもありません。galleryこれは、エラーメッセージが示していることですgallery。ビューでは未定義です。


コメントをREに更新します。

写真をギャラリーコントローラーに移動させたいからといって、「ギャラリー」と入力して結果を期待できるわけではありません。これはプログラミング言語であり、単語には意味があり、実行しているのは未定義の変数を参照することだけです。これは、これまでどのバージョンのRailsでも機能していました。

写真をギャラリーコントローラーにルーティングする場合は、自動的に生成された_pathヘルパーを使用できます。具体的にはgallery_path、これは「ギャラリー」(実際には写真)のIDの引数を受け入れて次のように表示します。

<%= link_to 'Show', gallery_path(photo.id) %><br/>
于 2013-02-05T04:33:35.773 に答える
0

Try replacing your link_to method with something like: <%= link_to 'Show', :controller => "photos", :action => :your_method, :params1 => gallery %>.

Then in your PhotoController you can use: @my_gallery = params[:params1] to access your gallery item.

Some documentation on routes:

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

于 2013-02-05T05:23:35.677 に答える