1

私はレールの初心者で、コントローラーに新しいメソッドを追加しようとするとエラーが発生します:(
管理者パスの下にコントローラーがあります。

Admin::MyUsersController < ApplicationController
before_filter :......

def index
  redirect_to :action => :show_my_action
end

def show_my_action
  ...
  ...
end

私のコントローラーはこれが好きですが、正確にはそうではありません。
私のroutes.rbで

namespace "admin" do
  resources :my_users do
    get "show_my_action"
  end
end

私のroutes.rbがこのような場合、エラーが発生します=>ルートが一致しません{:action => "show_my_action"、:controller => "admin / my_users"}

namespace "admin" do
  resources :my_users do
    get "show_my_action", :on => :collection
  end
end

私のroutes.rbがこのようになったら、エラーは発生しません:S
なぜこのエラーが発生するのですか。ルートパス上にある他のコントローラーの最初の宣言を使用できます。

4

2 に答える 2

1

アクションがメンバーにあるのかコレクションにあるのかを指定する必要があります。メンバーの場合、URLはadmin/my_users/:id/show_my_actionです。コレクションにある場合は、admin/my_users/show_my_actionです。ここでそれを読んでください:http://edgeguides.rubyonrails.org/routing.html

于 2012-12-02T01:40:18.547 に答える
1

RESTfulアクションにアクションを追加しています。コレクションまたはメンバーを指定しない場合、ルートは必要なものを認識できません。このように定義する場合:

namespace "admin" do
  resources :my_users do
    get "show_my_action"
  end
end

ルートはどのようにして必要なルートを知ることができますか?

my_users/show_my_action, or my_users/:id/show_my_action

したがって、そのメンバーまたはコレクションを指定する必要があります。

namespace "admin" do
  resources :my_users do
    get "show_my_action", :on => :collection
  end
end

ルートがあります:、、my_users/show_my_actionおよび:

namespace "admin" do
  resources :my_users do
    get "show_my_action", :on => :member
  end
en

ルートがあります:my_users/:id/show_my_action

「 RESTfulアクションの追加」で確認できます。

于 2012-12-02T01:48:04.560 に答える