在rails 2中使用link_to时,为什么要在路由文件中添加连接

|| 我试图完成以下任务:   <%= link_to \“注销\”,{:控制器   => \'users \',:action => \'logout \'},:class => \'menulink2 \'%> 但这没有用,它总是将我重定向到显示视图。我必须在route.rb中添加以下内容:   map.connect \'users / logout \',   :controller => \'用户\',:action =>   \'登出\' 为什么Rails无法识别我正在通过的动作(\'logout \')?     
已邀请:
        该逻辑必须在某处指定。从散列ѭ0a到URL必须有一些映射,并且在rails中完成的位置是
routes.rb
文件。在较旧版本的rails中,许多
routes.rb
带有默认值:
map.connect \':controller(/:action/(:id(.:format)))\'
这样就可以指定大多数:controller,:action哈希,然后将其路由到
host.url/:controller/:action
。 在更现代的版本中,基于资源的路由非常受青睐,并且不遵循rails的REST约定的控制器(即仅具有“ 5”个方法)通常必须以某种方式明确指定其路由。 (使用
map.resources :users, :collection => {:get => :logout}
map.connect( \'some_url\', :controller => \'users\', :action => \'logout\'})
) 我正在猜测,但是他们这样做的原因可能是控制器的动作实际上只是其公共方法。 在控制器中使用非URL端点进行测试的公共方法通常非常好。 例如,您可以将ѭ8作为公共方法进行测试,而不必在测试代码中使用use9。 因此,它们将资源操作列入白名单,并默认使其他操作不可访问。让我看一下rails changelog,看看我是否正确。     

要回复问题请先登录注册