Rails3 - 重构重定向调用

时间:2010-12-15 21:04:27

标签: ruby-on-rails refactoring

重构:

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/

路线:

资源:学校   root:to => “学校#显示”

事情尝试了:

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 个答案:

答案 0 :(得分: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