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
来找出你可用的路径。啊,你能把你的实际代码放在问题中吗(或者更准确的表示?)编辑它,请检查。我没有得到你的解决方案,请你更详细一点。