更改资源的路径变量

时间:2013-02-28 18:25:06

标签: ruby-on-rails

我刚刚决定我的'用户'控制器的'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,我会喜欢它。不可否认,这听起来像是一个糟糕的黑客,但可以做到吗?

3 个答案:

答案 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' }