Railsには、クエリ文字列に配列を渡すための表記法が組み込まれています。
Started GET "/users?ids[]=1&ids[]=2&ids[]=3" for ::1 at 2016-08-19 12:08:42 +0200
Processing by UsersController#index as HTML
Parameters: {"ids"=>["1", "2", "3"]}
あなたは配列にすべてsome_key
のパラメータをマージしますsome_key[]=1&some_key[]=2
表記レールを使用し
。
パスヘルパーに配列を渡すと、正しいリクエストURLが生成されます。 JSON.parse
を使用して
irb(main):012:0> app.users_path(ids: [1,2,3])
=> "/users?ids%5B%5D=1&ids%5B%5D=2&ids%5B%5D=3"
# for clarity
irb(main):013:0> CGI.unescape app.users_path(ids: [1,2,3])
=> "/users?ids[]=1&ids[]=2&ids[]=3"
はちょうどハック修正して、アプリケーションのバグをマスキングされます。
あなたのケースで最もよく起こりそうなのは、users_path(ids: some_variable)
への入力が文字列であり、期待どおりの配列ではないということです。
irb(main):014:0> CGI.unescape app.users_path(ids: "[1,2,3]")
=> "/users?ids=[1,2,3]" # this will not be treated as an array!
出典
2016-08-19 10:20:48
max
ありがとうございました。それは正常に動作しています。私は配列として渡すだけですが、それはparamsの中の文字列として取っています。 –
あなたは大歓迎です:) – Ursus