在rails 3 form_for中自定义多个提交标签

时间:2011-08-01 15:58:10

标签: ruby-on-rails ruby-on-rails-3

我设置了一个form_for来审核我网站上提交的图片,但是我希望有多种提交标签,不仅可以提交更改,还可以将值发送到字段中?

这样,如果我点击“批准图片”按钮,则会提交表单,并且我的“状态”字段设置为“已批准”

我不知道怎么做这个哈哈。

1 个答案:

答案 0 :(得分:0)

您可以访问在params哈希中按下的按钮。假设你有REST-ful控制器,这是我快速而肮脏的解决方案:

# images_controller.rb
def update
  @image = Image.find(params[:id])
  case params[:commit] # Value of button (which is shown as the text of the button in browsers)
  when 'approve image'
    @image.status = 'approved'
  when 'other status'
    ...
  else
    @image.status = 'flagged'
  end
  @image.save
  # Redirect or whatever
end

更好的解决方案:

# images_controller
before_filter :set_status

def update
  @image = Image.find(params[:id])
  @image.update_attributes(params[:image|)
  # Redirect
end

private
def set_status
  params[:image][:status] = case params[:commit]
  when 'approve image'
    'approved'
  ...
  else
    'flagged'
  end
end