class SongsController < ApplicationController
def new
@song = Song.new
end
def create
ids_collection = Array.new
# some logic to save multiple songs object and accumulate their ids
# in ids_collection variable.
redirect_to new_song_url, notice: "songs saved"
end
end
我希望以下要点得到澄清或回答,希望这些是明智的 1.我想将ids_collection数组传递给'new'方法 2.当我像这样传递时(即redirect_to new_song_url(ids_collection))我得到这样的url(即GET“/songs/new.72%2F73”),这在新方法中很难解码。
3.我只想要,'ids_collection'键入params hash,将值作为该键中的数组。我怎样才能实现这一目标,是否需要将'ids_collection'列入白名单以获得强参数?
答案 0 :(得分:1)
您必须将密钥,值对传递给new_song_url
redirect_to new_song_url(song_ids: ids_collection), notice: "songs saved"
然后您可以按照以下方式访问new
操作中的song_ids,
params[:song_ids]
强参数处理质量分配,与您尝试的操作无关。
另请注意,当您在新操作中访问song_ids时,它们将是字符串类型。您可能希望将它们转换为整数params[:song_ids].map(&:to_i)