1

我刚刚决定我的“用户”控制器的“显示”操作不应再呈现页面,而是应该由 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,我会喜欢它。诚然,这听起来像一个可怕的黑客,但可以做到吗?

4

3 回答 3

2

您可以指定格式:

user_path( user, format: :json )

如果您希望您的助手抛出错误,只需在以下位置覆盖它application_helper.rb

def user_path( *args, options = {} )
  raise MyException
end

...或者只是使用您最喜欢的 IDE / shell 来查找助手的所有出现。

于 2013-02-28T18:33:55.617 回答
1

作为一个黑客,你可以去 helpers/application_helper.rb 并在那里插入

def user_path(*args)
  "javascript:..."
end

这会成功的。但我不建议将其作为长期解决方案,仅作为一种快速解决方法来检查您的新代码如何工作,可能。

此外,如果您想为正确的用户构建链接,您需要解析 user_path 参数的所有可能组合。如果您只以user_path(@user)格式调用它,那么它相对容易。

于 2013-02-28T20:20:14.747 回答
1

您可以在以下位置指定路由的默认格式config/routes.rb

resources :user, defaults: { format: 'json' }

如果您只想这样做show

resources :user, only: [:show], defaults: { format: 'json' }
于 2013-02-28T21:46:45.037 回答