当前位置:  开发笔记 > Android > 正文

使用to_param为包含分隔符的字段使用Rails RESTful资源

如何解决《使用to_param为包含分隔符的字段使用RailsRESTful资源》经验,为你挑选了0个好方法。

我希望我的Rails 2.3.2应用程序响应并生成如下所示的URL:

/websites/asd.com
/websites/asd.com/dns_records/new

在我的config/routes.rb中,我有:

map.resources :websites, :has_many => :dns_records
map.resources :dns_records, :belongs_to => :website

然后我可以访问以下资源:

/websites/1
/websites/1/dns_records

通过修改我的网站模型,我可以生成更好的URL,如下所示:

class Website < ActiveRecord::Base
    def to_param
        domain_name
    end
    ...
end

# app/views/websites/index.erb
<% @websites.each do |w| %>
<%= link_to "Show #{w}", website_path(w) %>
<% end %>

# Produces a link to:
/websites/example_without_periods_in_name

但是,对于包含"."的域名.人物,Rails变得不快乐.我相信这是因为'.' character在ActionController :: Routing :: SEPARATORS中定义,它列出了用于拆分URL的特殊字符.这允许你做像/websites/1.xml这样的东西.

那么,是否有一种干净的方式允许'.' RESTful URL中的字符?

我已经尝试重新定义ActionController :: Routing :: SEPARATORS以不包含'.',这是解决问题的一种非常糟糕的方法.这会通过在其中附加".:format"来混淆生成的URL.

我也知道我可以在我的config/routes.rb中添加:requirements => {:id => regexp}来匹配包含'.'的域名.(没有这个,params [:id]被设置为第一个'.'之前的域名部分),但这无助于RESTful生成URL /路径.

非常感谢:)尼克

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