加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:48:26 所属栏目:百科 来源:网络整理
导读:我的应用程序允许人们创建投资组合.我希望他们能够将他们的域名连接到他们的投资组合. 所以somedomain.com会显示/投资组合/ 12,someotherdomain.com会显示/投资组合/ 13等等.但我不想要重定向.我想让用户在浏览器网址中看到somedomain.com. 我怎么做? 好的,
我的应用程序允许人们创建投资组合.我希望他们能够将他们的域名连接到他们的投资组合.

所以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操作的行上,因为优先级基于创建顺序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读