2017-03-31 49 views
0

而不是檢查if controller_name == 'foo' && action_name == 'bar'的,是有一個Rails的方法來在你的routes.rb中文件(get '/buzz' => 'foo#bar')定義它們相同的格式返回兩個?Rails方法返回當前的「控制器#行動」?

有什麼樣get_current_route()那將返回"foo#bar"

+2

該格式是非常獨特的路由系統,而不是其他地方使用,而且即便如此,它只是兩個稍長選項的簡寫。這裏的用例是什麼? – tadman

+0

避免這樣的:如果'(CONTROLLER_NAME == '富' && ACTION_NAME == '巴')|| (CONTROLLER_NAME == 'foo2的' && ACTION_NAME == 'BAR2')' – Andrei

+1

做一個查找表:'MAGIC_ROUTES = [%(重量)[富巴],%(重量)[foo2的BAR2]]'然後'MAGIC_ROUTES.include? ([PARAMS [:控制器],則params [:行動])' – tadman

回答

0

我不知道一個。

但是你可以寫你自己的,堅持方便的地方:

例如爲:

module ApplicationHelper 

    def get_current_route 
    "#{params[:controller]}##{params[:action]}" 
    end 

end 
0

您可以通過使用controller_nameaction_name方法,讓你的電流控制器和行動的名稱。所以你可以連接字符串來獲得想要的結果。

您也可以從PARAMS哈希其視爲一種不好的做法,這樣做讓這些值。

params哈希表將始終包含:控制器和:動作鍵, 但你應該使用的方法CONTROLLER_NAME和ACTION_NAME而是 訪問這些值

ActionController Parameters

參考鏈接:

Rails - controller action name to string

Can I get the name of the current controller in the view?

相關問題