Ruby on rails can';t创建我的@current_用户

Ruby on rails can';t创建我的@current_用户,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是ruby on rails的新手,谁能帮帮我? 我看不到@current\u user.username *这是我的会话控制器 class SessionController < ApplicationController def new end def create user = User.find_by_username(params[:session][:username]) if user login user redirec

我是ruby on rails的新手,谁能帮帮我?
我看不到@current\u user.username

*这是我的会话控制器

class SessionController < ApplicationController
  def new
  end
  def create
    user = User.find_by_username(params[:session][:username])
    if user
      login user
      redirect_to user
    else
      render 'new'
    end
  end
  def sucess
  end
  def error
  end   
end
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionHelper
end
*控制器

class SessionController < ApplicationController
  def new
  end
  def create
    user = User.find_by_username(params[:session][:username])
    if user
      login user
      redirect_to user
    else
      render 'new'
    end
  end
  def sucess
  end
  def error
  end   
end
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionHelper
end
class ApplicationController
*我的模型用户

class User < ActiveRecord::Base
  attr_accessible :pass, :username
  validates :username, :pass, :presence => true
  validates :username, :pass, :length => { :minimum => 4 }
  validates :username, :uniqueness => true
class用户true
验证:username,:pass,:length=>{:minimum=>4}
验证:用户名,:唯一性=>true
*应用程序布局

  <title>Sessions</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<% if @current_user %>
    Hello <%= @current_user.username %>
    <% end %>
<%= yield %>

</body>
会话
“全部”%>
你好
*和我的登录视图

 <%= form_for(:session, url: login_path) do |f| %>   
              <%= f.label :username %>
              <%= f.text_field :username %>

              <%= f.label :pass %>
              <%= f.password_field :pass %>

              <%= f.submit "Log in" %>
    <% end %>


请帮助我:)

您在helper中有方法:

def current_user
    @current_user ||= User.find(session[:user_id])
end
因此,在模板中,您应该使用
current\u user
,而不是
@current\u user

因此,它应该是:

<body>
    <% if current_user %>
        Hello <%= current_user.username %>
    <% end %>
    <%= yield %>

</body>

因为在这种情况下,
current_user
也可以从控制器和模板中调用。

您看到的错误是什么?@mayone那么您的问题是什么?在应用程序布局中,我看不到@current_user.username,只要在会话_controller中创建“@current_user=user.find(params[:id]),我就可以看到它,方法成功。@mayone:在您的问题中更新此信息,而不是作为注释。在我看来,您更希望调用当前用户,而不是视图中的@current\u用户。视图可以访问ApplicationController方法,但不能访问在其控制器操作中甚至未显式设置的随机实例变量。只需尝试调用视图中的当前_用户,并检查其是否适合您;-)妈的,马科,刚刚跟他说了同样的话。投票表决吧,这很有效!!!非常感谢。非常感谢你,马尔科!!!我是越南人,我刚学了5天ruby on rail,这方面我很慢。对不起,如果我的英语这么差:)