从Rails 4表单中的特定字段中提取信息

时间:2015-08-19 18:02:19

标签: ruby-on-rails forms ruby-on-rails-4 params

我正在创建一个Blog Post版本控制系统。 (我试过Paper_trail和Draftsman,他们没有我需要的东西)。当用户编辑" live"页面,我的应用程序不是更改实时版本,而是使用新信息创建一个PostVersion表条目并将其调用为" pending"。但是,如果用户编辑"草稿"页面,否"待定" PostVersion已创建,它只是直接编辑页面。

我似乎无法将表单params从表单传递到PostVersion.create!方法。当我试图从表单值中提取时,它只提交nil值。

posts_controller.rb

def update
  @post = Post.find(params[:id])
  if @post.status == 'draft'
   #this not important
  end
  if @post.status == 'live'
    @pending_post =  PostVersion.create!(title: params[:title], status:  'pending',  body: params[:body],  post_id:  @post.id )
  end
end

_form.html.slim

= simple_form_for [:admin, @post ], multipart: true do |f| 
  = f.error_notification 
  = f.input :title, label: 'Title', required: true, focus: true
  #rest of the form redacted

1 个答案:

答案 0 :(得分:0)

实际参数可以嵌套在“post”数组中,例如post[title]。您可能希望定义一个特定的params方法,如下所示:

def update
  @post = Post.find(params[:id])
  if @post.status == 'draft'
   #this not important
  end
  if @post.status == 'live'
    @pending_post =  PostVersion.create!(title: post_params[:title], status:  'pending',  body: post_params[:body],  post_id:  @post.id )
  end
end

private

def post_params
  params.require(:post).permit :title, :body
end