在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)}';})"}" }