2011-12-13 4 views
6

私のアプリケーションのすべてのページで、現在のページのJSONバージョンへのリンクが必要です。これを行うためのすてきなトリックですか? URLに「&」というパラメータが追加されていると、複雑になっていました。URLをJSONバージョンに変換していますか?

'/users' => '/users.json' 

'/users?page=1&per_page=5' => '/users.json?page=1&per_page=5' 

答えて

8

A

ので、URLはとして転置されるだろう修正を加えたGet url for current page, but with a different formatからこの答えのためttribution、:

ヘルパー:

def current_url(new_params) 
url_for params.merge(new_params) 
end 

リンク:リンクはのために異なるだろうので

<%= link_to "JSON of this page", current_url(:format=>:json) 
+0

あなたが引用した質問では、それらを使用する前にパラメータを複製する必要があります。とにかく、あなた自身の答えを受け入れてください。 –

+0

「url_for params.merge(new_params)」の代わりに、「url_for:params => params.merge(new_params)」の要件が異なりました。 –

+0

ooops申し訳ありませんが、私は 'merge'の代わりに' merge! 'を読んでいます。 –

10

これを試してみてください:

polymorphic_path(@user, :format => :json) 

(このAPI docに見られるように)代わり

user_path(:id => @user.id, :format => :json) 
+0

は、私は、すべてのページのJSONバージョンへのリンクが必要ですそのページのパスと私は1つ、または多くの関連オブジェクトを持っている可能性があります。現在のページの名前付きパスをgitし、:format =>:jsonを追加する方法はありますか? –

+0

私は[この質問](http://stackoverflow.com/questions/5913525/get-url-for-current-page-but-with-a-different-format)が見つかりました。 –

+0

もお手伝いします。ロケールを設定するのに現在のページを保持するには、例えば 'url_for(:locale =>:en)'を使用します。これは ':locale'と連動するので、おそらく':format'で動作します –

関連する問題