Rails 4.0 / Ruby 2.0
我正在尝试为Rails 4转换Rails 2应用程序。在布局文件中,我有一个脚本来调用应用程序控制器中的操作(重新加载会话变量),然后在刷新按钮时刷新页面点击了布局。
我无法弄清楚如何引用应用程序控制器中的任何操作:
<%= url_for(:action => 'refresh_users', :controller => 'application') %>
我尝试过'url_for'几种不同的方式,包括不指定控制器。
对于我尝试过的每一种方式,我总是得到一个无路由错误(“无路由匹配{:action =&gt;”refresh_users“,:controller =&gt;”application“}”)
我在这里做错了什么?
<script type="text/javascript">
var refresh_user_session = function() {
$.get(
"<%= url_for(:action => 'refresh_users', :controller => 'application') %>",
function(data){
alert('You access rights have been re-loaded, the page will now re-load.');
location.reload();
}
);
return false
}
</script>
谢谢!
答案 0 :(得分:0)
我认为你对这里的rails路由有误解。
在rails 2中你通常在你的路线match ':controller(/:action(/:id(.:format)))'
中有这样的东西,它允许你在任何控制器上调用任何动作。
这将允许您在ApplicationController
中定义公共方法,并通过继承使其可供应用程序中的任何控制器访问。
我认为这应该仍然适用于rails4。由于match
已被弃用且您正在执行get
请求,因此我会在get ':controller(refresh_users(.:format))'
中添加routes.rb
之类的内容。这将允许您在任何控制器上调用/XYZ/refresh_users.json
。
我很想知道......为什么你真的想要在每个控制器中都有一个动作。这非常罕见!