1

「users」コントローラーの「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代わりにJavaScriptURIを吐き出せばいいのですが。確かに、これはひどいハックのように聞こえますが、それは可能ですか?

4

3 に答える 3

2

フォーマットを指定できます:

user_path( user, format: :json )

ヘルパーにエラーをスローさせたい場合は、次のようにオーバーライドしてapplication_helper.rbください:

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

... または、お気に入りの IDE / シェルを使用して、ヘルパーのすべての出現箇所を見つけます。

于 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 に答える