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_port操作提供的值。所以假设g是一个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 回答