【问题标题】:Rails undefined method user_signed_in?Rails未定义的方法user_signed_in?
【发布时间】:2013-08-30 23:36:48
【问题描述】:

一直在努力让我的网站在 Heroku 上运行,并意识到我没有将 //= require_tree . 添加到我的 application.js 文件中,我相信这就是我的 JS 文件没有被加载的原因。

添加之后,我在生产模式下推送到 Heroku 并收到错误“未定义的方法 'user_signed_in?'对于#"

我尝试将我认为对user_signed_in? 的所有引用更改为signed_in?(:user),但这没有任何区别。我正在运行 Rails 3.2.13,这就是我在 Gemfile 中获取 Devise gem 的方式:

gem "devise", :git => "git://github.com/plataformatec/devise.git"

有什么建议吗?

更新 - Routes.rb

BrainDb::Application.routes.draw do

devise_for :users

resources :submissions
get "/submissions/new(.:format)" => "submissions#new"
get "/submissions/:id(.:format)" => "submissions#show"
post "/submissions/:id(.:format)" => "submissions#update"

resources :folders

root to: 'home#index'

scope "api" do
get "/submissions(.:format)" => "submissions#index"
get "/submissions/:id(.:format)" => "submissions#show"
get "/:user_id/submissions(.:format)" => "submissions#usercontent"
get "/:user_id/submissions/:id(.:format)" => "submissions#usersubmission"



get "/:user_id/folders(.:format)" => "folders#userfolders"

get "/submissions/:id/edit(.:format)" => "submissions#edit"

get "/folders/new(.:format)" => "folders#new"

end

Application.js:

//= require jquery
//= require jquery_ujs
//= require_tree .

Application.html.erb 我在哪里使用它:

<% if user_signed_in? %>

<div id="fixed_nav">
<h3 id="logo"><a href="/">chakra</a></h3>
<%= form_tag(folders_path, :method => "get", class: "navbar-form", id: "search-form") do %>
    <div class="input-append">
        <%= text_field_tag :search, params[:search], placeholder: "Search for anything", :class => "form-field" %>
        <button class="btn btn-edit" type="submit form-submit"><i class="icon-search"></i></button>
    </div>
<% end %>
<div id="settings-links">
    <%= link_to "Settings", edit_user_registration_path, :method => :get %>
    <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
</div>
</div>

<% else %>

<div id="fixed_nav">
<h3><a href="/">chakra</a></h3>
</div>

<% end %>

用户.rb:

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :user_id, :submissions, :folders
# attr_accessible :title, :body

has_many :submissions
has_many :folders

end

【问题讨论】:

  • 有用户模型吗?您是否使用设计创建了用户模型? rails 生成设计模型
  • 是的,我已经在本地运行应用程序几个月了。当我删除 require_tree 行时,设计和用户模型工作,但显然我的其余 JS 资产没有加载。
  • 发布您的 config/routes.rb 并检查 devise :database_authenticable 是否存在于您的用户模型中。
  • 你能发布你的 application.js 吗?
  • 更新了 application.js 和 routes.rb

标签: ruby-on-rails ruby ruby-on-rails-3 heroku devise


【解决方案1】:

有时 ApplicationController 中的“clear_helpers”方法会阻止 Devise 加载他的助手。

删除此方法应该是您的绿灯。

config.action_controller.include_all_helpers = false

在您的 application.rb 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2013-02-05
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多