2014-10-18 2 views
0

Итак, я пытаюсь получить мои новые/создаваемые действия, работающие с form_for для моего ресурса 'project', но форма создания в 'new.html.erb', похоже, кажется, что параметр 'version 'пустым, когда я представить его, даже если я устанавливаю его равным 1.Rails Validation Failed for Create Action

Проекты контроллер

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 

Большое спасибо заранее!

+0

Возможно, у вас есть сильные_параметры, отфильтровывающие ваш параметр версии. Можете ли вы показать нам функцию 'project_params' в вашем контроллере проектов? – JTG

+0

Хммм. Я добавил их! – Ben

+0

oh ничего себе. Я просто заметил опечатку в сильных параметрах ... Это была проблема. Благодаря! – Ben

ответ

0

Понял это благодаря JTG. В моих сильных параметрах появилась опечатка, которая заставляла «версию» отфильтровываться и, таким образом, не проходила.

Спасибо всем!

0

я бы установить его равным единице в том виде, как скрытое поле, как это:

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

Я хотел бы также избавиться от @ project.version = 1 в вашем проекте нового действия.

+0

Почему он не пропускает «1», не будучи явным? Мое другое скрытое поле «unique_id», похоже, работает нормально. – Ben

+0

не похоже, что вы присваиваете скрытое поле значение ... – Joel