我刚刚决定我的'用户'控制器的'show'动作不再呈现页面,而是ajax调用使用的一些json。 编辑:我已经实现了这一部分。我的控制器只有
def show
render :json => myobject
end
我在视图中的javascript生成了执行AJAX的URL,而且一切正常。至于我的问题:我只想采取一点捷径;而不是通过像
之类的东西遍历我链接到此操作的所有位置<%= link_to "Foobar" user_path(@user) %>
并将其替换为
<a href='javascript:blahblah'>Foobar</a>
如果user_path
只是吐出我的javascript URI,我会喜欢它。不可否认,这听起来像是一个糟糕的黑客,但可以做到吗?
答案 0 :(得分:2)
您可以指定格式:
user_path( user, format: :json )
如果您希望帮助者抛出错误,只需在application_helper.rb
中覆盖它:
def user_path( *args, options = {} )
raise MyException
end
...或者只是使用您喜欢的IDE / shell来查找助手的所有出现。
答案 1 :(得分:1)
作为一个黑客,你可以去helpers / application_helper.rb并插入那里
def user_path(*args)
"javascript:..."
end
这样就可以了。但我不建议将其作为长期解决方案,只是作为快速解决方法来检查新代码的工作方式。
此外,如果要为正确的用户构建链接,则需要解析所有可能的user_path参数组合。如果您只是以user_path(@user)
格式调用它,那么它相对容易。
答案 2 :(得分:1)
您可以在config/routes.rb
中指定路线的默认格式:
resources :user, defaults: { format: 'json' }
如果您只想对show
执行此操作:
resources :user, only: [:show], defaults: { format: 'json' }