2

私はこのコントローラーメソッドを持っています:

def slide_change
 j=params[:val]
 g=TargetPortfolio.new
 @h,@lock=g.finding_the_concerned_id(j)
 #@h , @lock both are array. 
 last=TargetPortfolio.last  # TargetPortfolio is model class
 last.update_attributes(folders: @h)
 redirect_to :action => "target_port" #with this i need to pass @lock as argument
end

コントローラーの別のメソッド target_port:

def target_port
 @h=TargetPortfolio.last.folders
 # @lock from the slide_change
end 

利用可能なルート

slide_change GET  /slide_change(.:format)                Portfolio#slide_change
 /:controller(/:action(/:id))(.:format) :controller#:action

@h と @lock を使用する target_port.erb があります。

4

3 に答える 3

2

gアクションの routes.rb ファイルに与える値を定義する必要がありますtarget_portgはID番号だとしましょう。

routes.rb で:

match '/TARGET/:id', :to => 'controller#target_port', :as => :target_port

したがって、コントローラーで次のように記述できます。

def slide_change
 j=params[:val]
 g=some_function(j)
 redirect_to target_port_path(g)
end

アップデート

(より詳細な)

newビュー ファイルで、次の行を追加します。

<%= hidden_field_tag "lock", @lock %>

隠しフィールドタグは、フォームが送信されたときに渡される "lock" という名前のパラメーターを作成します。これをcreateコントローラーのアクションに配置することでアクセスできます。

def create
  ...
  @lock = params[:lock]
  ...
end
于 2013-09-08T14:04:30.157 に答える
1

リダイレクトをに変更 し、メソッドにredirect_to :action => "target_port", :lock => @lockロードしますtarget_port@lock = params[:lock]

于 2013-09-08T16:59:28.943 に答える
0

コントローラーでこれを行うと、次のようになります

redirect_to some_path(:params1 => params1_value, :params2 => params2_value)
于 2013-09-08T14:02:40.757 に答える