【问题标题】:How can I redirect to a specific controller/action with similar routes?如何重定向到具有类似路由的特定控制器/操作?
【发布时间】:2017-01-01 02:49:50
【问题描述】:

即使我在 routes.rb 文件中指定了不同的属性,我的路由也会重定向到同一个控制器。

这些是我的路线。

match ':clube_id' => 'clubes#show', :as => 'clean_cluble', via: [:get]
match ':project_id' => 'projects#show', :as => 'clean_project',via: [:get] 

这些是我正在使用的链接。

=link_to 'Project', :controller => "projects", :action => "show", :project_id=>'xxxxx'
=link_to 'Clube', :controller => "clubes", :action => "show", :id=>'cccc'

项目的链接运行良好,但俱乐部的 linl 正在重定向到项目控制器。这就是问题所在。

我看到的网址是:

http://host_name/project_name
http://host_name/clube_name

【问题讨论】:

    标签: ruby-on-rails ruby redirect hyperlink routes


    【解决方案1】:

    您没有指定不同的属性,两条路线对于 Rails 看起来是相同的。 match 方法期望 ':clube_id'':project_id' 中的任何字符串(或 id),例如:

     host_name/soho_project or host_name/1
    

    Rails 如何识别与其相关的模型?它可以是ProjectClub。我建议在 match 方法中添加类似 anchor 的内容。

    match 'club/:clube_id' => 'clubes#show', :as => 'clean_cluble', via: [:get]
    match 'project/:project_id' => 'projects#show', :as => 'clean_project',via: [:get] 
    

    和助手:

    = link_to 'Project', clean_project_path(:project_id=>'xxxxx')
    = link_to 'Clube', clean_cluble_path(:clube_id=>'cccc')
    

    阅读更多来自 Rails 的路线guides

    【讨论】:

      猜你喜欢
      • 2014-08-24
      • 1970-01-01
      • 2020-04-22
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      相关资源
      最近更新 更多