ruby-on-rails – 将多个动作路由到同一个控制器和动作

ruby-on-rails – 将多个动作路由到同一个控制器和动作,第1张

概述我想在我的Rails应用程序上运行这样的东西: match '/:language', :to => 'posts#search_result'match '/:tag', :to => 'posts#search_result'match '/:language/:tag', :to => 'posts#search_result' 我正在使用此search_result *** 作根据语言和标记过 我想在我的Rails应用程序上运行这样的东西:

match '/:language',:to => 'posts#search_result'match '/:tag',:to => 'posts#search_result'match '/:language/:tag',:to => 'posts#search_result'

我正在使用此search_result *** 作根据语言和标记过滤一些帖子.

问题是有时候:标签将为零或:语言将为零;所以我在调用动作时有以下3种可能性:

<%=link_to "Spanish",{:controller => 'posts',:action => 'search_result',:language => "spanish"} %><%= link_to "Spanish",:language => "spanish",:tag => @tag} %><%=link_to "#{tag.name}",:tag => @tag} %>

我希望有以下网址:

/spanish          (for the first case)/spanish/rails    (where rails is a tag,for the second case)/rails            (for the third case)

但是现在我得到了第一和第三种情况的严格要求,但对于我得到的第二种情况:
/西班牙语吗?标签=轨道
或再次/西班牙语(取决于我是先选择标签还是先选择语言).

我希望我能正确解释自己.任何的想法??.谢谢!.

解决方法 路由器无法区分a:language和a:tag.

只是因为当您在视图中构建代码时,您的路由会说“语言”和“标记”.请记住,在HTML中,这已经被翻译成普通的简单URL,例如/ spanish或/ rails

然后必须从该URL中找出路线.

现在正如我所说,路由器无法判断某个特定单词是一种语言还是一个标签…而且plain-ole-URL中不再包含“tag”或“language”这个词……所以你的两条路线在这里:

match '/:language',:to => 'posts#search_result'

都是相同类型的URL

斜杠后只​​有一个标记.以下是一些与该路线匹配的示例:

/greek/spanish/rails/urdu/whatever

它们都将匹配匹配“斜杠后的单个令牌”的第一条路线…这意味着您的路由器将所有路由与“语言”路由匹配,并且永远不会匹配“/:tag”路由,因为它已经在上面的路线上匹配了.

他:他对路由器来说都是希腊人;)

编辑:

Hi,this is helPing me a lot to understand how routing works.. but still i can’t see it clear. I understand what you saID,and so basically i understand i should do something like match ‘/Tags/:tag to at least only route to posts#search_result the URLS starting by /tag .. what would be a solution??

是的,“/ Tags /:tag”是清晰明确的,但是如果你希望它在标签与语言中真正灵活,你可以通过简单的方式获得更好的服务:

match '/posts/search',:to => 'posts#search_result'

可以使用上面的任何link_to示例生成例如:

/posts/search?tag=rails/posts/search?language=spanish/posts/search?language=spanish&tag=rails

什么被传递以及为什么会更清楚.

第三个URL的描述是“我正在搜索一组有语言= spanish和tag = rails的帖子”

您的URL应该反映资源(在这种情况下是一组帖子)其他一切最好作为查询参数.

总结

以上是内存溢出为你收集整理的ruby-on-rails – 将多个动作路由到同一个控制器和动作全部内容,希望文章能够帮你解决ruby-on-rails – 将多个动作路由到同一个控制器和动作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1289100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存