【发布时间】:2016-11-21 02:30:10
【问题描述】:
我在除登陆之外的页面上使用 before_action 实现了设计身份验证。唯一的问题是,这现在将我锁定在用户计划页面之外。我可以很容易地允许计划页面作为一个例外,除非计划部分显示在另一个主页上,以便在有人未登录时显示。我尝试允许主页作为例外,但收到控制器错误(PagesController#home 中的 ActiveRecord::RecordNotFound)。我的问题是 1.) 我应该想办法让 else 显示并保持局部化,还是应该重新组织代码并将它们全部分开?
我是否需要包含其他文件(路由?)
另外,如果我的问题格式不正确,请随时纠正我。谢谢。
home.html.erb
<div class="row">
<% if user_signed_in? %>
<%= render 'users/home' %>
<% else %>
<%= render 'users/plans' %>
<% end %>
</div>
pages_controller.rb
class PagesController < ApplicationController
before_action :authenticate_user!, except: [:landing, :home]
def landing
end
def plans
end
def home
@contributor_plan = Plan.find(1)
@elitecontributor_plan = Plan.find(2)
@technician_plan = Plan.find(3)
@elitetechnician_plan = Plan.find(4)
@center_plan = Plan.find(5)
@elitecenter_plan = Plan.find(6)
@affair_plan = Plan.find(7)
@eliteaffair_plan = Plan.find(8)
end
end
控制器错误(当 home 被排除在身份验证之外时)
【问题讨论】:
-
您的数据库中是否有计划记录。如果没有,请尝试通过
10.times { Plan.create }在您的控制台中创建一些。
标签: ruby-on-rails ruby devise