Ответ 1
Просто добавьте их к параметрам:
redirect_to controller: 'thing', action: 'edit', id: 3, something: 'else'
Допустим /thing/3/edit?something=else
Как мы передаем параметры в redirect_to в rails? Я знаю, что мы сможем использовать id:
redirect_to :action => action_name,:id => 3
Если я хочу передать дополнительные параметры, например, некоторые данные формы, как это сделать?
EDIT:
Для синтаксиса Ruby 2 вам необходимо обновить фрагмент выше:
redirect_to action: action_name, id: 3
Просто добавьте их к параметрам:
redirect_to controller: 'thing', action: 'edit', id: 3, something: 'else'
Допустим /thing/3/edit?something=else
Если вы используете ресурсы RESTful, вы можете сделать следующее:
redirect_to action_name_resource_path(resource_object, param_1: 'value_1', param_2: 'value_2')
or
#You can also use the object_id instead of the object
redirect_to action_name_resource_path(resource_object_id, param_1: 'value_1', param_2: 'value_2')
or
#if its a collection action like index, you can omit the id as follows
redirect_to action_name_resource_path(param_1: 'value_1', param_2: 'value_2')
#An example with nested resource is as follows:
redirect_to edit_user_project_path(@user, @project, param_1: 'value_1', param_2: 'value_2')
Если у вас есть данные формы, например отправленные на главную # действие, теперь вы хотите перенаправить их на # # дома, сохраняя параметры, вы можете сделать это
redirect_to act_house_path(request.parameters)
Вы можете передать произвольные объекты в шаблон с параметром flash.
redirect_to :back, flash: {new_solution_errors: solution.errors}
И затем получите доступ к ним в шаблоне через хэш.
<% flash[:new_solution_errors].each do |err| %>
redirect_to new_user_path(:id => 1, :contact_id => 3, :name => 'suleman')
redirect_to :controller => "controller_name", :action => "action_name", :id => x.id
routes.rb
match 'controller_name/action_name' => 'controller_name#action_name', via: [:get, :post], :as => :abc
Любой контроллер, который вы хотите перенаправить с параметрами, приведен ниже:
redirect_to abc_path(@abc, id: @id), :notice => "message fine"
Если вы ищете способ передать дополнительные параметры URL (не контроллер, действие, идентификатор и т.д.), Вот надежный способ сделать это:
object_path(@object, params: request.query_parameters)
Это передаст параметры utm или любые другие дополнительные параметры, которые вы не хотите потерять.
Проложите свой путь, возьмите params
и вернитесь:
redirect_to controller: "client", action: "get_name", params: request.query_parameters and return