0

カスタムルートを使用して移動しようとして/admin/homeいますが、エラーが発生し続けます: undefined local variable or method 'home_admins_path' for #<#<Class:0x007f8272855808>:0x007f8272b9f298>when using= link_to 'Home', home_admins_path

実行rake routesすると、パスが有効であるように見えます: home_admins_path GET /admins/home(.:format) admins#home

ルート.rb

MyApp::Application.routes.draw do
  devise_for :admins

  get '/admins/home' => 'admins#home', as: :home_admins_path

  resources :admins

  root to: 'pages#home'
end

admins_controller.rb

class AdminsController < ApplicationController
  load_and_authorize_resource

  def home
    render "admins/home.html.haml"
  end
end
4

2 に答える 2

2

オプションを使用して名前付きパスを指定するとas、Rails によって名前に「_path」が追加されます。だからあなたのルートのために:

get '/admins/home' => 'admins#home', as: :home_admins_path

すると名前付きルートになりhome_admins_path_pathます。

したがって、home_admins_path名前付きルートを取得するには、次のように変更する必要があります。

get '/admins/home' => 'admins#home', as: :home_admins 

別のオプションは、次collectionのようにこのルートを追加することです。resources :admin

resources :admins do 
  collection do 
    get '/home', action: :home, as: :home
  end
end

これにより、名前付きの route も提供されますhome_admins_path

于 2013-08-20T02:30:14.240 に答える
0

as に home_admins_path を指定する必要はありません。_path はレールによって自動的に追加されるため、問題の場合は、次のようにルートを記述するだけです

get '/admins/home' => 'admins#home', as: :home_admins

rails によって home_admins_path または home_admins_url として展開されます。

于 2013-08-20T02:30:58.820 に答える