2013-06-11 3 views
0

У меня есть два разных способа доступа к URL-адресу «localhost: 3000/childrens/new».Рельсы, как сохранить запрошенный URL-адрес?

У меня есть выпадающее меню на детской/новой странице, и когда пользователь выбирает опцию при выпадающем списке, она показывает разные частичные элементы, используя ajax для вызова метода # новых детей.

  1. доступа ДЕТСКО новую страницу с URL "локального хоста: 3000/родители"
  2. доступа ДЕТСКО новую страницу с URL "локальный: 3000/PARENTS1"

После того как дети были успешно созданы , пользователь должен быть перенаправлен на соответствующий URL-адрес (или локальный: 3000/родители или локальный: 3000/PARENTS1)

+0

Сохранить URL-адрес из выпадающего меню в виде строки переменных и синтаксический анализ для перенаправления URL – visnu

ответ

1

Есть более чем один из способов, как вы можете достичь этого.

Одно из решений для хранения реферер внутри сессии/куки, когда детские/новой просьбы: (внутри children_controller)

def new 
    session['children_new_referrer'] = request.env["HTTP_REFERER"] 
    #....YOUR CODE.... 
end 

И затем, используя это значение реферер, хранящееся в сессии/куки для перенаправления соответственно:

def create 
    #.....YOUR CODE.... 
    if @child.save 
    format.html {redirect_to (session['children_new_referrer'] || parents_path)} 
    #.....YOUR CODE.... 
end 

где @child является объект, который я предполагаю, что вы строите с параметрами, и parents_path в настоящее время определяется через ваши маршруты. Не стесняйтесь приспосабливать эти два на основе ваших потребностей.

Альтернативным решением было бы не использовать сеансы, а вместо этого сохранить urr/urr реферера внутри самой страницы дочерних/новых форм. Эта альтернатива имеет преимущество в том, чтобы сделать область сеанса/запроса решения независимой с обработкой требования сохранения реферала uri/path в пределах области страницы.

0

ли что-то вроде этого

def create 

redirect_to :back 

end 

redirect_to: задняя часть должна появиться после сохранения.

+0

перенаправляет на локальный хост: 3000// новые детско если я использовать request.env [ 'HTTP_REFERER']. – Mano

2

магазин значение в сессии, как session[:last_request] в родительских

После создания дети переадресовать его на session[:last_request] || session[:return_to] и после этого снимите session[:last_request]

+0

wow !! он отлично работает .. спасибо :) – Mano

0

Передайте ссылку как параметр в ссылке. Я бы предпочел это решение использовать хранилище сеансов.

<%= link_to "New child", new_child_path(referrer: @parent.id) %> 

.. или все, что вы хотите назвать. Затем вы можете проверить params[:referrer]. Вы не хотите сохранять данные через «сеанс», поэтому зачем использовать хранилище сеансов.

0
request.url 

в вашем контроллере дает адрес, который вы запрашиваете. Так,

def create 
    if @child.save 
     redirect_to request.url 
    end 
end 

сделает работу отлично

Смежные вопросы