当前位置:  开发笔记 > 编程语言 > 正文

在rails中重命名路由(map,link_to,to_param)

如何解决《在rails中重命名路由(map,link_to,to_param)》经验,为你挑选了1个好方法。

我有一点问题......我设置了一个用于服务德国网站的rails应用程序.为了利用Rails的内部复数功能,我将所有模型保留为英文(例如模型" JobDescription").现在,如果我打电话给" http://mysite.com/job_descriptions/",我得到了所有job_descriptions......到目前为止,这么好.因为我不想job_descriptions在我的网址中使用英文术语" ",所以我将以下内容放入我的routes.rb中

map.german_term '/german_term', :controller => 'job_descriptions', :action => 'index'
map.german_term '/german_term/:id', :controller => 'job_descriptions', :action => 'show'

如果我打电话给" http://mysite.com/german_term/"或" http://mysite.com/german_term/283"我得到了所有job_descriptions,这很好.

但是,为了使URL更加SEO友好,我想在URL中交换id以获得更加用户友好的slug.因此,我把以下内容放在我的job_description.rb:

def to_param
"#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
end

每当我job_description_path在任何link_to方法中使用" " 时,都会将我的网址呈现为" http:// mysite/job_descriptions/13-my-job-description-title ".

然而,这就是我被困住的地方,我想得到" http://mysite/german_term/13-my-job-description-title".我已经尝试在link_to代码job_description_path中用" "替换" german_term_path",但只生成" http://mysite/german_term/13".显然,to_param不叫.我找到的一个解决方法是构建链接:

<%= link_to job_description.name, german_term_path(job_description.to_param) %>

但是改变link_to我代码中的所有调用是相当繁琐的.我想要的是在URL中出现时job_description用" german_term" 替换" " .

有什么想法吗?!?

问候,

塞巴斯蒂安



1> Mike..:

我认为你需要使用宁静的路线助手来获得你想要的东西.

在这种情况下,它不需要太多的重新分解(假设您已将JobDescriptions映射为资源).保留to_param,并将JobDescriptions路由更改为以下内容:

map.resources :job_descriptions, :as => 'german_term'

希望这可以帮助!

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有