Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在rails控制器方法中使用重定向传递参数_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 在rails控制器方法中使用重定向传递参数

Ruby on rails 在rails控制器方法中使用重定向传递参数,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个控制器方法: 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 :a

我有一个控制器方法:

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
另一种方法是控制器的目标端口:

def target_port
 @h=TargetPortfolio.last.folders
 # @lock from the slide_change
end 
def create
  ...
  @lock = params[:lock]
  ...
end
可用路线

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

我有一个target_port.erb,它使用@h和@lock。大家猜我该怎么做。

当我在控制器中这样做时,它看起来像

redirect_to some_path(:params1 => params1_value, :params2 => params2_value)

您必须定义
g
在routes.rb文件中为
target\u端口
操作提供的值。所以我们假设
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 %>
将重定向更改为
重定向到:action=>“target\u port”,:lock=>@lock
并使用
@lock=params[:lock]
将其加载到
target\u port
方法中,其中的某个路径是什么?某个路径将是您想要去的路径,如
新用户路径(:name=>“test”)
你应该运行
rake routes
来找出你可用的路径。啊,你能把你的实际代码放在问题中吗(或者更准确的表示?)编辑它,请检查。我没有得到你的解决方案,请你更详细一点。