0

Rails 3 环境使用haml。

设想

我们有一个应用程序,帐户有自己的子域。该帐户可能已由推荐合作伙伴传递给我们。推荐合作伙伴也将拥有自己的帐户。每个帐户都可以存储自己的徽标,包括合作伙伴。我们希望最终用户帐户在其登录页面上显示合作伙伴徽标。

方法

所以我解决这个问题的方法是在登录 url 中包含一个参数,以便合作伙伴可以在他们自己的网站上拥有链接到显示他们的徽标和我们的登录表单的页面的按钮,例如

http://www.myapp.com/login?partner=bob

然后在登录表单中查找参数,所以

- if params[:partner].blank?
  = %img{src = > @our_logo}
- else
  - p = params[:partner]
  - a = Account.where(:full_domain => p}
  = %img{src = > a.logo}

现在这很好用。但是,full_domain 字段包含名称所暗示的内容,即完整域,因此只要登录 url 类似于

http://www.myapp.com/login?partner=bob.myapp.com

我认为这很讨厌,并且想要更像

http://www.myapp.com/login?partner=bob

我认为这更整洁。

问题

我需要做的是拆分整个域的第一个单词并根据它找到帐户。这段代码肯定会正确拆分它......

a = Account.find(1)
a.full_domain.split('.').first

但是我不知道在尝试查找记录时如何使用它。因此,例如,这失败了

- a = Account.where((full_domain.split('.').first) => p).first

因为我认为完整的域不是一个符号。下一次尝试失败了……

- a = Account.where((:full_domain.split('.').first) => p).first

因为我不认为你可以对字符串以外的任何东西进行拆分(对不起,我是自学成才,对编程和 ruby​​/rails 都比较陌生!)

所以最后我试着把它转换成这样的字符串......

- a = Account.where((:full_domain.to_s.split('.').first) => p).first

但这也不起作用,我偷偷地怀疑我在叫错树。

谁能帮我指出正确的方向?

提前致谢

G

4

1 回答 1

1

我可能想得太简单了,但这不是你想要的吗?

p = params[:partner]
a = Account.where(:full_domain, "#{p}.myapp.com").first
于 2013-10-31T12:46:59.640 回答