我在Rails 3中为管理员用户提供了一个更新表单,尽管已经过验证,但仍然无声地失败。之前 正在工作,但当我将所有内容移动到命名空间时,它就不再保存了。
以下是我的控制器的相关代码:
def update
@admin = Admin::Admin.find(params[:id])
respond_to do |format|
if @admin.update_attributes(params[:admin])
flash[:success] = "'#{@admin.name}' was successfully updated."
format.html { redirect_to admin_admins_path }
else
format.html { render action: "edit" }
end
end
end
模型(未完成,但之前正在工作):
class Admin::Admin < ActiveRecord::Base
validates :name, :presence=>{:message=>"Name can't be blank"}
validates :email, :presence=>{:message=>"Email can't be blank"},
:length => {:minimum => 3, :maximum => 254, :message=>"Email must be between 3 and 254 characters"},
:uniqueness=>{:message=>"Email has already been registered"},
:format=>{:with=>/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :message=>"Email must be a valid email format"}
validates :password, :presence=>{:message=>"Password can't be blank"}
end
表格的第一部分:
<%= form_for(@admin) do |f| %>
所有内容都正确加载,但是当我尝试保存时,我的验证将被忽略,并且会重定向到索引页面并显示成功消息,但不保存数据。我有一种感觉,我错过了与命名空间有关的事情,但我不完全确定问题是什么。它可以在基础模型目录中寻找模型吗?
答案 0 :(得分:1)
params[:admin]
不再包含表单值。
答案 1 :(得分:0)
所以,VirtuosiMedia和我逐步完成了它,并且RoR添加了一个“admin_”来表示Admin ::名称空间,所以我们不得不寻找params [:admin_admin]。