コントローラーに新しいメソッドを追加する際に問題が発生しました。詳細は次のとおりです。
match_controller.rb
def index
@matches = Match.all
render rabl: @matches
end
def current
@matches = Match.find_by_sql("SELECT * FROM `TEST`.`matches` where live=1;")
render rabl: @matches
end
ルート.rb
resources :matches, defaults: {format: :json}, except: :edit do
collection do
get :current
end
end
current.json.rabl
collection @match
attributes :id,:live
レーキルート
current_matches GET /matches/current(.:format) matches#current {:format=>:json}
matches GET /matches(.:format) matches#index {:format=>:json}
POST /matches(.:format) matches#create {:format=>:json}
new_match GET /matches/new(.:format) matches#new {:format=>:json}
match GET /matches/:id(.:format) matches#show {:format=>:json}
PUT /matches/:id(.:format) matches#update {:format=>:json}
DELETE /matches/:id(.:format) matches#destroy {:format=>:json}
ログのエラー
NameError (undefined local variable or method `flash' for #<MatchesController:0x0000000d7b2368>):
app/controllers/application_controller.rb:6:in `block in <class:ApplicationController>'
アプリケーション.rb
class ApplicationController < ActionController::API
include ActionController::MimeResponds
include CanCan::ControllerAdditions
rescue_from CanCan::AccessDenied do |exception|
flash[:error] = exception.message
puts exception.message
redirect_to root_url
end
def log_exception(exception)
logger.error(exception.message)
logger.error(exception.backtrace.join("\n"))
end
end
以前に別のアプリケーションでこれを行ったことがありますが、ここで機能しない理由はわかりません。