Ten*_*ack 1 routing ruby-on-rails url-rewriting
我有List对象,如下所示:
www.mysite.com/lists/123
其中123是列表的id.我想要做的是添加列表标题的网址,以便它提供更多信息(谷歌或其他).所以我希望它看起来像:
www.mysite.com/lists/123/title-of-list-number-123
你如何添加这样的网址?如果您只输入:www.mysite.com/lists/123没有标题,是否应该找到标题然后重定向到新路线?
如果你想保持你的发现呼叫(通过id),你可以做与mplacona建议相反的事情:
def to_param
"#{id}-#{title.parameterize}"
end
Run Code Online (Sandbox Code Playgroud)
有了这个,你的find(params [:id])将起作用,因为它会将字符串转换为整数(只有当数字在字符串的开头时才能成功).所以这实际上会起作用:
List.find("123-my-title")
Run Code Online (Sandbox Code Playgroud)
和将是一样的
List.find(123)
Run Code Online (Sandbox Code Playgroud)
在此处阅读更多有关此方法和其他方法:http://gregmoreno.ca/how-to-create-google-friendly-urls-in-rails/
参数化将自动将字符串转换为"漂亮"的URL.在这里阅读更多内容:http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001367
如果你想要更多的功能,我会建议friendly_id.