Ruby / Rails 4.2.5 - 设计 - before_action:authenticate_user - 用户计划页锁定

时间:2016-11-21 02:30:11

标签: ruby-on-rails ruby devise

我在除登陆之外的页面上使用了before_action实现了设计认证。唯一的问题是,这现在将我锁定在用户计划页面之外。我可以轻松地允许计划页面作为例外,除非计划在另一个主页上分开,当有人没有签名时显示。我已经尝试允许主页作为例外但收到控制器错误(PagesController #home中的ActiveRecord :: RecordNotFound)。我的问题是1.)我是否应该找到一种方法来允许其他方式显示并保持其分区,或者我应该重新组织代码并将它们全部分开?

我是否需要包含其他文件(路由?)

此外,如果我错误地格式化了这个问题,请随时纠正我。谢谢。

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

控制器错误(当主页不在身份验证时)

enter image description here

1 个答案:

答案 0 :(得分:0)

flash信息非常明显:

"RecordNotFound, Couldn't find Plan with 'id'=1.

请创建至少8个ID为1到8的计划:

8.times do |i|
 Plan.create(...., id: i+1)
end