使用rails 4.1中的redirect_to方法在同一控制器内的操作之间发送数据

时间:2014-10-12 15:27:09

标签: ruby-on-rails

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'列入白名单以获得强参数?

  

1 个答案:

答案 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)