【发布时间】:2014-09-10 05:08:20
【问题描述】:
我有一个用户组表,其中包含在创建组时输入的 group_name 值。如果组名中有空格,例如“Team Lol”,仍然会创建组名,但不会分配给当前用户,并且会在控制器中的 if/else 语句中抛出错误消息。代码如下:
控制器:
def create
@group = current_user.create_user_group(group_params)
current_user.user_group = @group
current_user.save
if @group.valid?
redirect_to '/user_groups/'+@group.group_name, :notice => "Your group has been created"
else
redirect_to '/user_groups/', :error => "Error: group name may already be taken. Search, or try a new name."
end
end
型号
class UserGroup < ActiveRecord::Base
has_many :users
has_secure_password
validates :password, :presence => true
validates :group_name, :presence => true, :uniqueness => true
before_validation :strip_blanks
def strip_blanks
self.group_name = self.group_name.strip
end
创建表单:
<div class="form-group">
<label for="Group Name">Enter group name</label>
<%= f.input :group_name, :required => true, :autofocus => true, :maxlength => 40, :input_html => { :class => "form-control" }, :label => false, :placeholder => "Group name" %>
</div>
<div class="form-group">
<label for="Password">Password</label>
<%= f.input :password, :required => true, :autofocus => true, :maxlength => 40, :input_html => { :class => "form-control" }, :label => false, :placeholder => "Group password" %>
</div>
<%= f.button :submit, :class => "btn btn-md btn-warning" %>
</div>
【问题讨论】:
-
请发布您的错误信息。
-
没有来自 rails 的错误消息,页面加载并运行我的 if/else 语句的这一部分:else redirect_to '/user_groups/', :error => "错误:组名可能已经被占用. 搜索,或尝试一个新名称。结束
-
你能发布你在用户模型上设置组关联的方式吗?我相信您的代码会尝试保存组两次(一次通过 create_user_group 调用,一次通过用户保存)。
-
class User
-
查看我的日志输出,我认为你是正确的 Lazarus。我看到应用程序创建了组,将其保存给用户,然后尝试再次创建组,看到它已经创建,并抛出错误。可能是什么来源?
标签: ruby-on-rails forms validation model