所以我试图让我的新/创建动作与我的资源'项目'一起使用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
提前非常感谢!
答案 0 :(得分:0)
我会将它设置为表格中的一个作为隐藏字段,如下所示:
<div>
<%= f.hidden_field :version, value: 1 class: 'form-control' %>
</div>
我还会在你的项目新动作中摆脱@ project.version = 1。
答案 1 :(得分:0)
感谢JTG。在我强大的参数中似乎有一个拼写错误导致版本&#39;过滤掉,因此没有通过。
谢谢大家!