从昨天开始,我一直在尝试在项目中安装authlogic。我可以看到,所有示例和文档都面向rails和authlogic的旧版本。但是,我试着遵循:
文档中的示例 轨道广播 其他网站示例如:http://www.logansbailey.com/2010/10/06/how-to-setup-authlogic-in-rails-3/(对我来说,直到现在最有用的教程) 我没有让authlogic正常工作。 我通过gemfile和bundle安装顺序安装了gem。 我生成了一个模型用户并运行了迁移
$ rails生成脚手架用户名:string email:string crypted_password:string password_salt:string persistence_token:string $ rake db:migrate
我将以下行添加到模型user.rb:
acts_as_authentic
然后,我输入一个注册新用户的链接:link_to" Register",new_user_path 我编辑/app/views/users/index.html.erb看起来像:
<h1>Listing users</h1>
<table>
<tr>
<th>Username</th>
<th>Email</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%= user.username %></td>
<td><%= user.email %></td>
<td><%= link_to 'Show', user %></td>
<td><%= link_to 'Edit', edit_user_path(user) %></td>
<td><%= link_to 'Destroy', user, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New User', new_user_path %>
和app / views / users / _form.html.erb看起来像:
<%= form_for(@user) do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :username %><br />
<%= f.text_field :username %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %><br />
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
现在,当我尝试注册用户时,我收到两个错误:
-Password is too short (minimum is 4 characters)
-Password confirmation is too short (minimum is 4 characters)
我已经放了更长的密码,但它没有用。
任何帮助?
谢谢
答案 0 :(得分:0)
根据错误消息而不看到用户控制器,似乎没有将password和password_confirmation传递给用户模型。这可能是防止质量分配问题的Rails 4。为此,在用户控制器的create方法中,您可以说:
@user = User.new(user_params)
然后定义user_params方法:
def user_params
params.require(:user).permit(:password, :password_confirmation, :name, :email)
end