ruby-on-rails – Rails 3路由和多个域

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails 3路由和多个域前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用程序允许人们创建投资组合.我希望他们能够将他们的域名连接到他们的投资组合.

所以somedomain.com会显示/投资组合/ 12,someotherdomain.com会显示/投资组合/ 13等等.但我不想要重定向.我想让用户在浏览器网址中看到somedomain.com.

我怎么做?

好的,我找到了这个解决方案:

match "/" => "portfolio#show",:constraints => { :domain => "somedomain.com" },:defaults => { :id => '1' }

由于我没有很多自定义域,所以现在很好,但问题是 – 如何使这个动态的,从db读取域和id数据?

解决方法

首先,您应该向投资组合模型添加一个字段来保存用户的域.确保此字段是唯一的.在数据库中的字段中添加索引也是明智的.

第二,设置你的根路径到投资组合#show动作,就像你已经做到的那样,但没有约束.

然后,在PortfoliosController#show方法中,执行以下检查:

if params[:id]
  @portfolio = Portfolio.find(params[:id])
else
  @portfolio = Portfolio.find_by_domain(request.host)
end

之后,唯一要做的就是确保你自己的域不会触发投资组合#show动作.这可以用您之前使用的约束完成,但现在与您自己的域.确保将此行放在routes.rb上方的投资组合#show操作的行上,因为优先级基于创建顺序.

猜你在找的Ruby相关文章