我有这种控制器方法:
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。任何猜测我是如何做到的。
答案 0 :(得分:2)
您必须在g
操作的routes.rb文件中定义target_port
给出的值。所以我们说g
是一个身份证号码。
在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
答案 1 :(得分:1)
将重定向更改为
redirect_to :action => "target_port", :lock => @lock
并使用target_port
@lock = params[:lock]
方法中
答案 2 :(得分:0)
当我在我的控制器中执行此操作时,它看起来像
redirect_to some_path(:params1 => params1_value, :params2 => params2_value)