Rails3 – перенаправление вызова рефакторинга

#ruby-on-rails #refactoring

#ruby-на-рельсах #рефакторинг #ruby-on-rails

Вопрос:

Рефакторинг этого:

 redirect_to "http://#{@school.id}"   '.'   request.domain   request.port_string   '/'
  

Это внутри школьного контроллера:

 def create
    @school = School.new(params[:school]) 

    if @school.save
      redirect_to "http://#{@school.id}"   '.'   request.domain   request.port_string   '/'
    else
      render "new", :layout => nil
    end
end
  

Чтобы он перенаправлял на:

 subdomain.domain.dom/
  

Маршруты:

ресурсы: корень школы:кому => «школы#показать»

Что пробовали:

 redirect_to(:host=>@school.id   '.'   request.domain   request.port_string)
  

Сбой, потому что он перенаправляет на http://subdomain.domain.dom/schools

И как мне передать уведомление?

У меня есть это в представлении:

 <% if flash[:notice] -%>
    <div id="info_panel">
    <%= flash[:notice] -%>
    </div>
<% end -%>
  

И это в контроллере:

 flash[:notice] = "School created"
redirect_to(school_base(@school.id))                  
  

Ответ №1:

 redirect_to "http://#{@school.id}.#{request.domain}#{request.port_string}/"
  

Если вы будете использовать это регулярно, возможно, вам захочется рассмотреть возможность добавления метода в ApplicationController в соответствии с:

 def url_for_school(school)
  "http://#{school.id}.#{request.domain}#{request.port_string}/"
end
helper_method :url_for_school
  

Комментарии:

1. Неплохо. Как я могу добавить a:notice?

2. Если содержимое поддомена обрабатывается одним и тем же приложением, вы должны быть в состоянии сделать это нормально: flash[:notice] = "Your notification" . Если это совершенно отдельное приложение, вы можете рассмотреть возможность передачи его в виде строки запроса, если только вы не хотите настроить файлы cookie для разных приложений. Спросите, нужна ли вам дополнительная информация о последнем.

3. Приложение то же самое. Но уведомление : не отображается. У вас есть текущий код для редактирования.

4. Попробуйте изменить настройки домена в вашем хранилище сеансов, как описано здесь: guides.rubyonrails.org /…