我试图通过我的rabl
模板调用Rails助手,但它无效。
我有一个图像对象,我希望通过我的api传递它。那么图像路径应该有完整的URL(例如:http://<my url>/uploads/myimage.jpg
)。我想通过Rails助手添加的主机部分。
#my rabl file
object @image
attributes :id, :picture_url
我想要的是(我试过这个,但没有工作)
#my rabl file
object @image
attributes :id, full_url(:picture_url)
#app/helpers/application_helper.rb
module ApplicationHelper
def full_url(path)
"#{request.host}#{path}" #something like this
end
end
但是当我这样做时,它会完全删除:picture_url
对象中的json
属性
答案 0 :(得分:1)
我相信这可能适合你:
object @image
attributes :id
node(:picture_url) { full_url(:picture_url) }
node
允许您定义不直接映射到对象属性的内容。
编辑1
看起来我的node
语法错误了。试试这个:
node(:picture_url) { |i| full_url(i.picture_url) }
答案 1 :(得分:0)
通过调用full_url(:picture_url)
,attributes
获取的字符串与@image
对象上的方法不对应,即@image.id
返回一些内容,而@image.http://...
{1}}甚至无效:)。
我建议您先保留视图,然后使用控制器中的助手设置@image.picture_url
的值。