发送函数Rails jBuilder



在jbuilder文件中,我试图这样做:

json.directives do
  json.edit_provider_path "{href: function(){return '#{edit_provider_path(resource)}';}}"
end

我在客户端接收到:

{edit_provider_path: "{href: function(){return '/providers/201/edit';}}"}

是否可以发送一个function()给客户端?

JSON不允许函数,所以我不希望jBuilder支持它。如果您需要向客户端返回完整的JavaScript,那么js.erb模板可能是您的最佳选择。

我所做的是发送字符串到客户端:

{a_key: "{"href": "function(){return '#{edit_provider_path(resource)}';}"}" }

然后,在coffeescript中:

for key, val of res
  # key is a_key, and so on
  res[key] = JSON.parse(value)
  # res[key] is now {"href": "function(){...}"}
  for _key, _value of res[key]
    res[key][_key] = eval _value
    # res[key] is now {"href": function(){...}}

啊,我忘了,eval("function(){}")不工作,所以我不得不包装函数:

eval("(function(){...})")

即:

{a_key: "{"href": "(function(){return '#{edit_provider_path(resource)}';})"}" }

最新更新