Ruby rails 登录表单未保存属性和登录工作流程
Ruby on rails Login form not saving attributes and login workflow
我是 jRuby/Ruby Rails 的新手,正在尝试创建一个网站(学习目的)。
在此Web应用程序中,用户需要注册到系统。在成功登录尝试后,他们可以维护自己的仪表板,这是一个简单的 phone 联系人详细信息管理。
我正在使用
jruby 9.0.5.0 (2.2.3)
Rails 4.2.6
Windows 10
MySQL
XAMPP
安装
问题 1
在我的注册过程中,当我尝试插入一个新用户时,该功能有效但我没有在我的文本字段中获取值。相反,我在 table 中得到了空值。我做错了什么?
这是我的作品User
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.string :password
t.timestamps null: false
end
end
end
这是我的user.rb
模型
class User < ActiveRecord::Base
begin
attr_accessor :name, :email, :password, :password_confirmation
end
validates :name, :presence => true, :uniqueness => true, :length => { :in => 3..20 }
validates :email, :presence => true, :uniqueness => true
validates :password, :confirmation => true #password_confirmation attr
validates_length_of :password, :in => 3..20, :on => :create
end
这是我的users_controller.rb
class UsersController < ApplicationController
def login
end
def create
flash[:notice] = ''
@user=User.new(user_params)
if @user.valid?
@user.save
flash[:notice] = "You signed up successfully"
render 'users/login'
else
flash[:error] = "Form is invalid"
render 'users/signup'
end
end
def signup
@user = User.new
flash[:notice]=''
flash[:error]=''
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
end
这是我的signup.html.erb
<div class = "content">
<h1>Sign Up</h1>
<p>Maecenas nisi nunc, vulputate ac tempus eget, suscipit ut sapien. Aenean fringilla ultricies ultricies.
Mauris aliquet nunc in velit posuere, in convallis purus ullamcorper.
Nam imperdiet lacus lacus, quis finibus diam dapibus a. Nullam quis accumsan libero. </p>
<div class = "form_data">
<%= form_for(:user, :url => {:controller => 'users', :action => 'create'}) do |f| %>
<table>
<tbody>
<tr>
<td> Name : </td>
<td> <%= f.text_field :name %> </td>
</tr>
<tr>
<td> Email : </td>
<td> <%= f.text_field :email %> </td>
</tr>
<tr>
<td> Password : </td>
<td> <%= f.password_field :password %> </td>
</tr>
<tr>
<td> Re-type Password : </td>
<td> <%= f.password_field :password_confirmation %> </td>
</tr>
<tr>
<td> </td>
<td> <%= f.submit :signup %> </td>
</tr>
</tbody>
</table>
<% end %>
</div>
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
<% end %>
</div>
问题 2
如何创建 contact_details
table (id, name, phonenumber, owner_id)
,用户 table 的 user_ID
作为 foreign key (owner_id)
。
问题 3
如何创建简洁明了的登录算法。感谢任何指向教程的链接
第 4 题
如何编辑 Jruby/Ruby on rails
中的 Select 查询,以便我可以根据登录用户获取详细信息。
回答 1
当您使用 attr_accessor
时,它告诉模型您不希望将这些属性保存在数据库中,而只是在应用程序中用作模型属性。删除下面的块,数据应该可以正常保存。
begin
attr_accessor :name, :email, :password, :password_confirmation
end
回答2
阅读本文的最佳位置是 Rails Guides, Active Record Associations。解释几乎没有比这更好的了。
以下是您在不使用勺子喂食的情况下需要做的事情的要点:
您需要使用参数生成 UserDetail
model/scaffold。 id, name, phonenumber, user_id
(注意 user_id 的使用。这是外键的 rails 约定)。
您的模型声明将如下所示,
class User < ActiveRecord::Base
has_one :user_detail
end
class UserDetail < ActiveRecord::Base
belongs_to :user
end
回答 3
这是 Ryan Bates 关于如何从头开始创建身份验证的最佳视频。 http://railscasts.com/episodes/250-authentication-from-scratch-revised
回答4
答案 3 中的视频也会回答这个问题,但基本上当您设置了身份验证后,您只需执行以下操作即可获得详细信息
current_user.user_detail
更新
刚刚发现我发布的视频 link 是专业视频,需要订阅。如果你已经有了,正在学习的我强烈推荐rails,你应该能看到。如果没有,那里有很多 Authentication from scratch 教程,大部分都基于该视频。跟随任何一个都行。另外仅供参考,该网站目前只收取一个月的订阅费用,接下来的所有月份目前都免费续订(截至撰写本文时)。因此,对于高质量的学习来说,这是一笔非常划算的交易 material。
我是 jRuby/Ruby Rails 的新手,正在尝试创建一个网站(学习目的)。
在此Web应用程序中,用户需要注册到系统。在成功登录尝试后,他们可以维护自己的仪表板,这是一个简单的 phone 联系人详细信息管理。
我正在使用
jruby 9.0.5.0 (2.2.3)
Rails 4.2.6
Windows 10
MySQL
XAMPP
安装
问题 1
在我的注册过程中,当我尝试插入一个新用户时,该功能有效但我没有在我的文本字段中获取值。相反,我在 table 中得到了空值。我做错了什么?
这是我的作品User
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.string :password
t.timestamps null: false
end
end
end
这是我的user.rb
模型
class User < ActiveRecord::Base
begin
attr_accessor :name, :email, :password, :password_confirmation
end
validates :name, :presence => true, :uniqueness => true, :length => { :in => 3..20 }
validates :email, :presence => true, :uniqueness => true
validates :password, :confirmation => true #password_confirmation attr
validates_length_of :password, :in => 3..20, :on => :create
end
这是我的users_controller.rb
class UsersController < ApplicationController
def login
end
def create
flash[:notice] = ''
@user=User.new(user_params)
if @user.valid?
@user.save
flash[:notice] = "You signed up successfully"
render 'users/login'
else
flash[:error] = "Form is invalid"
render 'users/signup'
end
end
def signup
@user = User.new
flash[:notice]=''
flash[:error]=''
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
end
这是我的signup.html.erb
<div class = "content">
<h1>Sign Up</h1>
<p>Maecenas nisi nunc, vulputate ac tempus eget, suscipit ut sapien. Aenean fringilla ultricies ultricies.
Mauris aliquet nunc in velit posuere, in convallis purus ullamcorper.
Nam imperdiet lacus lacus, quis finibus diam dapibus a. Nullam quis accumsan libero. </p>
<div class = "form_data">
<%= form_for(:user, :url => {:controller => 'users', :action => 'create'}) do |f| %>
<table>
<tbody>
<tr>
<td> Name : </td>
<td> <%= f.text_field :name %> </td>
</tr>
<tr>
<td> Email : </td>
<td> <%= f.text_field :email %> </td>
</tr>
<tr>
<td> Password : </td>
<td> <%= f.password_field :password %> </td>
</tr>
<tr>
<td> Re-type Password : </td>
<td> <%= f.password_field :password_confirmation %> </td>
</tr>
<tr>
<td> </td>
<td> <%= f.submit :signup %> </td>
</tr>
</tbody>
</table>
<% end %>
</div>
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
<% end %>
</div>
问题 2
如何创建 contact_details
table (id, name, phonenumber, owner_id)
,用户 table 的 user_ID
作为 foreign key (owner_id)
。
问题 3
如何创建简洁明了的登录算法。感谢任何指向教程的链接
第 4 题
如何编辑 Jruby/Ruby on rails
中的 Select 查询,以便我可以根据登录用户获取详细信息。
回答 1
当您使用 attr_accessor
时,它告诉模型您不希望将这些属性保存在数据库中,而只是在应用程序中用作模型属性。删除下面的块,数据应该可以正常保存。
begin
attr_accessor :name, :email, :password, :password_confirmation
end
回答2
阅读本文的最佳位置是 Rails Guides, Active Record Associations。解释几乎没有比这更好的了。
以下是您在不使用勺子喂食的情况下需要做的事情的要点:
您需要使用参数生成 UserDetail
model/scaffold。 id, name, phonenumber, user_id
(注意 user_id 的使用。这是外键的 rails 约定)。
您的模型声明将如下所示,
class User < ActiveRecord::Base
has_one :user_detail
end
class UserDetail < ActiveRecord::Base
belongs_to :user
end
回答 3
这是 Ryan Bates 关于如何从头开始创建身份验证的最佳视频。 http://railscasts.com/episodes/250-authentication-from-scratch-revised
回答4
答案 3 中的视频也会回答这个问题,但基本上当您设置了身份验证后,您只需执行以下操作即可获得详细信息
current_user.user_detail
更新
刚刚发现我发布的视频 link 是专业视频,需要订阅。如果你已经有了,正在学习的我强烈推荐rails,你应该能看到。如果没有,那里有很多 Authentication from scratch 教程,大部分都基于该视频。跟随任何一个都行。另外仅供参考,该网站目前只收取一个月的订阅费用,接下来的所有月份目前都免费续订(截至撰写本文时)。因此,对于高质量的学习来说,这是一笔非常划算的交易 material。