2016-05-20 10 views
1

私はRuby on Railsの初心者です。私はusers_controller.rbを持っていますaction約100の多くがあります。だからルータに設置するのは難しいです。私は自動的に行動を設定したい。CakePHPのように自動的にページURLを取得するには?

例:

def abc 
    render text: 'Hello World!' 
end 
... 
... 
def xyz 
    render text: 'Bla Bla Bla' 
end 

私は私のURLは、このタイプ

http://localhost:3000/users/abc 
http://localhost:3000/users/xyz 
http://localhost:3000/users/some-action.. 

ルータ内の任意の複数行のURLパスを設定する必要はありません開いている必要がありますしたいです。

ここで私はルータに書き込んでいました。富栄そのコードが機能していない:

match ':controller(/:action(/:id(.:format)))' 

は私に

+0

あなたはこのタイプのアプリのすべてのコントローラのものが必要ですか?または特定のコントローラ – Thorin

+0

私はあなたがこの種のものを使用すべきではないと思うhttp://homakov.blogspot.in/2012/04/whitelist-your-routes-match-is-evil.html – Thorin

+0

'dnd 'とは何ですか? ...... – sawa

答えて

3

を助けてください、私はあなたのコードを使用して取得されたエラー:Rails 4.2.5.2ruby 2.3.0

You should not use the `match` method in your router without specifying an HTTP method. (ArgumentError) 
If you want to expose your action to both GET and POST, add `via: [:get, :post]` option. 

次作品:

match ':controller(/:action(/:id(.:format)))', via: [:get, :post] 

, via: [:get, :post]にご注意ください。

+0

はいうまく動作していることを確認してください。以前私はルータに別のパスを設定しました。コントローラー(/:アクション(/:id(。:フォーマット)) '、via:[:get、:post] '? – Chinmay235

+0

Railsルーティングは次のように動作します: 'config \ routes.rb'ファイルがあります。 Railsは上から下に各行をループします。現在のURLが現在の行の経路と一致する場合、Railsは停止してその経路を使用し、そうでない場合は次の行に進みます。それに基づいて、あなたが 'match ':controller(/:action(/:id(。:format)))'、via:[:get、:post]'あなたのファイルのTOP (ほぼ)常にルートと一致するので、下のすべての行は無駄になります。結論は:あなたの 'routes.rb'の下にこの行を置きます。その他の情報:http://guides.rubyonrails.org/routing.html – Pholochtairze

+0

はい、他のURLとうまく動作します。親愛なるありがとう:) – Chinmay235

関連する問題