Rails验证失败以创建操作

时间:2014-10-18 19:07:37

标签: ruby-on-rails forms validation

所以我试图让我的新/创建动作与我的资源'项目'一起使用form_for但是'new.html.erb'中的创建表单似乎认为参数'version'在我提交时是空白的它,即使我将它设置为等于1。

项目控制器

def new
  @project = current_user.projects.build if user_signed_in?
  @project.version = 1
  @project.unique_id = rand(1000000)
  while(Project.find_by_unique_id(@project.unique_id) != nil)
    @project.unique_id = rand(1000000)
  end
end

def create
  @project = current_user.projects.build(project_params)
  if @project.save
    flash[:success] = "Project created!"
    redirect_to user_url(current_user.username)
  else
    render 'new'
  end
end

private

def project_params
    params.require(:project).permit(:description, :name, :media, :content_type, :file_size, :unique_id, :verison)
end

New.html.erb

 <%= form_for(@project, html: {multipart: true}) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>

  <div>
    <%= f.label :name %>
    <%= f.text_field :name, maxlength: 50, class: 'form-control' %>
  </div>
  <div>
    <%= f.label :description %>
    <%= f.text_area :description, placeholder: "What is it all about?", class: 'form-control' %>
  </div>
  <%= f.file_field :media, accept: 'image/jpeg,image/gif,image/png,audio/mpeg,audio/vnd.wave' %>
  <%= f.hidden_field :version %>
  <%= f.hidden_field :unique_id %>  

  <%= f.submit "Create Project", class: "btn btn-primary" %>
<% end %>

项目模型

class Project < ActiveRecord::Base
  belongs_to :user
  has_many :comments, dependent: :destroy

  validates :user_id, presence: true
  validates :name, presence: true, length: { maximum: 50 }
  validates :unique_id, presence: true
  validates :version, presence: true
end

提前非常感谢!

2 个答案:

答案 0 :(得分:0)

我会将它设置为表格中的一个作为隐藏字段,如下所示:

<div>
   <%= f.hidden_field :version, value: 1  class: 'form-control' %>
  </div>

我还会在你的项目新动作中摆脱@ project.version = 1。

答案 1 :(得分:0)

感谢JTG。在我强大的参数中似乎有一个拼写错误导致版本&#39;过滤掉,因此没有通过。

谢谢大家!