在我的Rails 4应用程序中,我有一个带有PagesController布局的app/views/layouts/pages.html.erb。
两页需要一个特定的布局:home和help。
为了将特定的布局应用于home,我执行了以下操作:
class PagesController < ApplicationController
def home
render :layout => 'homepage'
end
end我有一个特定的主页布局:app/views/layouts/homepage.html.erb
这工作得很好。
然后,我尝试为帮助页面复制这个过程:
class PagesController < ApplicationController
def home
render :layout => 'homepage'
end
def help
render :layout => 'helppage'
end
end我有一个特殊的帮助布局:app/views/layouts/helppage.html.erb
但是,“帮助”页没有采用所需的布局。
我的密码有什么问题吗?
更新:根据禤浩焯·曼的要求,这是我的完整PagesController
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
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发布于 2016-01-07 12:58:30
尝试以下操作,注意删除的render
class PagesController < ApplicationController
def home
layout "homepage"
end
def help
layout "helppage"
end
end或者:
class PagesController < ApplicationController
layout "homepage", only: [:home]
layout "helppage", only: [:help]
def home
end
def help
end
end如前所述,elsewhere
方法
render实际上将尝试呈现内容;当您只想设置布局时,不应该调用它。
发布于 2016-01-07 01:23:07
我看不出你的代码有什么问题。您看到help操作的哪个布局?你能试试layout false吗?
class PagesController < ApplicationController
layout false
def home
render :layout => 'homepage'
end
def help
render :layout => 'helppage'
end结束
https://stackoverflow.com/questions/34645547
复制相似问题