0

サイト全体でルートによって生成されたリソース パス (つまり、 my : 、など)を使用して、各アクションに を使用してブログを作成しRails 3.2.5ています。ページにアクセスしようとすると、突然次のエラーが表示されます。link_tocode_entriescode_entries_pathnew_code_entry_path

undefined local variable or method `controller' for #<CodeEntriesController:0x007f887f8b3300>

このエラーは私のindexアクションによるものですcode_entries_controller.rbが、コントローラーでどのアクションに移動しようとしてもlink_to、ルートリソースパスを使用するたびにこのエラーが発生します。以前は問題なく動作していましたが、何が原因なのかわかりません。

この質問は my のコンテキストにあるため、 、、およびエラーcode_entriesのコードは次のとおりですが、 action のコンテキストにあります。code_entries_controller.rb/code_entries/index.html.hamlroutes.rbcode_entries#index


code_entries_controller.rb


class CodeEntriesController < ApplicationController

  before_filter :authenticate_action

  def index
    @entries = CodeEntry.order("created_at desc")
  end

  def new
    @entry = CodeEntry.new
  end

  def show
    @entry = CodeEntry.find_by_id(params[:id])
  end

  def create
    @entry = CodeEntry.new(params[:code_entry])

    if @entry.save
      redirect_to code_entry_path(@entry), :notice => "#{@entry.title} has been created"
    else
      puts @entry.errors.messages.inspect
      render "new"
    end
  end

  def edit
    @entry = CodeEntry.find_by_id(params[:id])
  end

  def update
    @entry = CodeEntry.find_by_id(params[:id])
    if @entry.update_attributes(params[:code_entry])
      redirect_to code_entry_path(@entry), :notice => "#{@entry.title} has been updated"
    else
      puts @entry.errors.messages.inspect
      render "edit"
    end
  end

  def destroy
    @entry = CodeEntry.find_by_id(params[:id])
    @entry.destroy
    redirect_to code_entries_path, :notice => "#{@entry.title} has been deleted"
  end
end


/code_entries/index.html.haml


%h1 Hello!
%br
- @entries.each do |e|
  %h2= link_to e.title, code_entry_path(e)
  %h3= e.updated_at
  = raw excerpt(e, 200)
  %br
  - if current_user
    = link_to "Edit", edit_code_entry_path(e)
    = button_to "Delete", code_entry_path(e), :confirm => "Really really?", :method => :delete
  %hr


routes.rb


Blog::Application.routes.draw do
  resources :users
  resources :code_entries
  resources :food_entries
  resources :inclusive_entries
  resources :sessions

  root :to => "home#index"

  get "login" => "sessions#new", :as => "login"
  get "logout" => "sessions#destroy", :as => "logout"

  get "users/new"
end


NameError in Code_entries#index


/Users/kyle/Projects/blog/app/views/code_entries/index.html.haml で 4 行目を表示:

undefined local variable or method `controller' for #<CodeEntriesController:0x007f887f813418>

抽出されたソース (4 行目あたり):

1: %h1 Hello!
2: %br
3: - @entries.each do |e|
4:   %h2= link_to e.title, code_entry_path(e)
5:   %h3= e.updated_at
6:   = raw excerpt(e, 200)
7:   %br
Rails.root: /Users/kyle/Projects/blog

アプリケーション トレース | フレームワーク トレース | 完全なトレース

app/views/code_entries/index.html.haml:4:in `block in _app_views_code_entries_index_html_haml___3334012984247114074_70112115764360'
app/views/code_entries/index.html.haml:3:in `_app_views_code_entries_index_html_haml___3334012984247114074_70112115764360'
Request

パラメーター:

None

セッションダンプを表示

環境ダンプを表示

応答

ヘッダー:

None
4

1 に答える 1

0

の中にメソッドを作成し、application_controller.rbそれを の引数として使用しましたhelper_method。内部にあり、タグを使用していapplication_controller.rbないため、ヘルパーメソッドの内部を使用できました。どういうわけか、そのステートメントはそれを爆破させていましたが、ステートメントを削除してヘルパーメソッドをすべてに移動すると、うまくいきました!application_helper.rbinclude ActionView::Helpers::UrlHelperlink_toincludeincludeapplication_helper.rb

于 2012-07-23T02:33:19.337 に答える