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

ruby-on-rails – Rails – 在没有url helper的情况下在模型的虚

发布时间:2020-12-16 23:26:08 所属栏目:百科 来源:网络整理
导读:我有一个带回形针附件的模型. 该模型可能用于多个rails应用程序 我需要将完整(非相对)url作为JSON API的一部分返回到附件中. 我想抽象回形针方面,并有一个像这样的简单虚拟属性: def thumbnail_url self.photo.url(:thumb) end 然而,这只给了我相对的路径.
我有一个带回形针附件的模型.

该模型可能用于多个rails应用程序

我需要将完整(非相对)url作为JSON API的一部分返回到附件中.

我想抽象回形针方面,并有一个像这样的简单虚拟属性:

def thumbnail_url
    self.photo.url(:thumb)
  end

然而,这只给了我相对的路径.因为它在模型中我不能使用URL帮助方法,对吧?

因为我没有帮助支持,所以在预先设置应用程序根URL的好方法是什么?我想避免硬编码或添加代码到组装我的JSON的控制器方法.

谢谢

解决方法

url helper从传入请求中获取主机名.模型不需要存在请求,因此您无法使用URL帮助程序.

一种解决方案是将请求主机名传递给缩略图url帮助程序.

def thumbnail_url(hostname)
  self.photo.url(:thumb,:host => hostname)
end

然后从您的控制器/视图中调用它

photo.thumbnail_url(request.host)

事实证明,获取服务器的主机名并不是一种万无一失的方法.如果用户在/ etc / hosts文件中添加了一个条目,他们可以使用他们想要的任何主机名访问服务器.如果您依赖传入请求的主机名,则可以使用它来中断缩略图.

因此,我通常在初始化程序中对我网站的主机名进行硬编码.例如把它放在config / initializers / hostname.rb中

HOSTNAME = 'whatever'

– 编辑 –

它像在rails 3中一样,你必须提供:only_path => false参数让它工作.这是控制台的一个例子:

>> app.clients_path :host => 'google.com',:only_path => false
=> "http://google.com/clients"

(编辑:李大同)

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

    推荐文章
      热点阅读