Ruby on rails can';t创建我的@current_用户
我是ruby on rails的新手,谁能帮帮我?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
我看不到@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,这方面我很慢。对不起,如果我的英语这么差:)