首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 4:将不同的布局应用于特定的控制器操作

Rails 4:将不同的布局应用于特定的控制器操作
EN

Stack Overflow用户
提问于 2016-01-07 00:46:19
回答 2查看 381关注 0票数 0

在我的Rails 4应用程序中,我有一个带有PagesController布局的app/views/layouts/pages.html.erb

两页需要一个特定的布局:homehelp

为了将特定的布局应用于home,我执行了以下操作:

代码语言:javascript
复制
class PagesController < ApplicationController
  def home
    render :layout => 'homepage'
  end
end

我有一个特定的主页布局:app/views/layouts/homepage.html.erb

这工作得很好。

然后,我尝试为帮助页面复制这个过程:

代码语言:javascript
复制
class PagesController < ApplicationController
  def home
    render :layout => 'homepage'
  end
  def help
    render :layout => 'helppage'
  end
end

我有一个特殊的帮助布局:app/views/layouts/helppage.html.erb

但是,“帮助”页没有采用所需的布局。

我的密码有什么问题吗?

更新:根据禤浩焯·曼的要求,这是我的完整PagesController

代码语言:javascript
复制
class PagesController < ApplicationController

  before_action :authenticate_user!, :only => [:help]

  def home
    [...]
    render :layout => 'homepage'
  end

  def features
  end

  def pricing
  end

  def about
  end

  def contact
  end

  def feedback
  end

  def press
  end

  def help
    render :layout => 'helppage'
  end

  def privacy
  end

  def terms
  end

  def career
  end

  def help
  end

  def faq
  end

  def guides
  end

  def support
  end

  def investors
  end

end

这是我的ApplicationController

代码语言:javascript
复制
class ApplicationController < ActionController::Base

  # include Pundit

  protect_from_forgery with: :exception

  before_action :configure_permitted_parameters, if: :devise_controller?

  # after_action :verify_authorized, :except => :index

  def after_sign_in_path_for(resource)
    sign_in_url = new_user_session_url
    if request.referer == sign_in_url
      super
    else
      stored_location_for(resource) || request.referer || root_path
    end
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :company_name, :email, :password, :password_confirmation, :time_zone, :company_type, :expert, :expert_approval, :category, :description, :portfolio, :price, :avatar, :first_reference, :second_reference, :third_reference, :location) }
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:first_name, :last_name, :company_name, :email, :password, :current_password, :password_confirmation, :time_zone, :company_type, :expert, :expert_approval, :category, :description, :portfolio, :price, :avatar, :first_reference, :second_reference, :third_reference, :location) }
  end

  def user_for_paper_trail
    user_signed_in? ? current_user.try(:id) : "Unknow User"
  end

  def facebook_copy_link(string)
    require "uri"
    array = URI.extract(string.to_s)
    array.select { |item| item.include? ( "http" || "www") }.first
  end

end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-07 12:58:30

尝试以下操作,注意删除的render

代码语言:javascript
复制
class PagesController < ApplicationController

  def home
    layout "homepage"
  end
  def help
    layout "helppage"
  end
end

或者:

代码语言:javascript
复制
class PagesController < ApplicationController
  layout "homepage", only: [:home]
  layout "helppage", only: [:help]

  def home
  end

  def help
  end
end

如前所述,elsewhere

方法render实际上将尝试呈现内容;当您只想设置布局时,不应该调用它。

票数 2
EN

Stack Overflow用户

发布于 2016-01-07 01:23:07

我看不出你的代码有什么问题。您看到help操作的哪个布局?你能试试layout false吗?

代码语言:javascript
复制
class PagesController < ApplicationController
  layout false

  def home
    render :layout => 'homepage'
  end
  def help
    render :layout => 'helppage'
 end

结束

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34645547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档