2017-02-13 3 views
0

Imが取得:Rails:URLヘルパーを文字列キーコントローラで呼び出すと、アクションは廃止予定です。代わりにシンボルを使用しますか?

「非推奨の警告:文字列キーコントローラとURLヘルパーを呼び出すと、 アクションが推奨されていませんが、代わりにシンボルを使用する」ユニットテストを実行する場合

を、私はこれで周りを見回したとレールに新しいものはありましたが、私はこの事例のトンを正確に打ち砕いたわけではありません。それは通常paramsシンボルから来ているようですが、Googleの結果の多くは、これが誤った警告であると訴えていますか?

私のケースでは、この特定の行不満だ:

<%= link_to exports_path(params.merge(format: 'xlsx')), :class => "btn btn-primary btn-xls" do %><i class="glyphicon glyphicon-download"></i>Export XLXS</a> &nbsp; <% end %> 

イムそれはparams.merge(format: 'xlsx'))文句だが、私は理由を理解していないと仮定すると?通常、このエラーはシンボルが使用されているときに見られましたが、ここではシンボルは使用されていません。

答えて

2

actioncontrollerは、paramsハッシュの文字列キーであるためです。

params = {'controller': 'home', 'action': 'index'} 

余分なキーをこのハッシュにマージすると、この非推奨の警告が表示されます。しかし、安全な方法でlink_toに送信したいハッシュを構築する必要があります。例えば。お使いのコントローラビューで

@my_params = {} 
@my_params[:format] = 'xlsx' 
@my_params[:name] = params[:name] 

そして

= link_to exports_path(@my_params) 

に次に、あなたのクエリ文字列の中に何が起こるのかを完全にコントロールを持っています。

編集:

あなたparamsに何のサブセットが必要な場合は、namesearchが必要な場合は、これを行うようにあなたは、あなたが必要とするキーでparamsハッシュを絞り込むことができます。

+0

私はそれを '@my_params [:format} = 'xlsx''に設定すると、私のコードラインで@my_paramsと置き換えることができますか? (残念ながら、私は非常にレールに新しい、私はコントローラ/ etc ...はまだ私にはまだ新しいテストコードを書いています) – msmith1114

+0

クエリ文字列の一部である必要がある 'params'には何がありますか? – Iceman

+0

何かの理由で私の悪い私はあなたの答えの底を見ていない、それは今より理にかなっています。ありがとう – msmith1114

関連する問題