是否可以将破坏操作添加到_form.html.erb而不是index.html.erb

时间:2012-12-19 05:50:26

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

如果我做脚手架,它会自动在index.html.erb中进行销毁动作 如果我想将此操作移至_form.html.erb,该怎么办? 我想让它只在编辑模式下显示(example.com/books/1212/edit)
不适用于新模式(example.com/books/new)

2 个答案:

答案 0 :(得分:1)

我认为这会对你有帮助

模型

class Job < ActiveRecord::Base
  attr_accessible :delete_flag #with other attributes
  attr_accessor :delete_flag
end

*在您的视图中(_form)*

<%= form_for(@job) do |f| %>
  #other code
  <%= f.text_field :delete_flag%>
  <div class="actions">
    <%= f.submit %>
    <%= f.submit "Delete",{:class => "delete_button"} %>
  </div>
<% end %>

的CoffeeScript

jQuery ->
  $('#new_job').submit -> 
    #capture your delete button click
    $('#job_delete_flag').val("1")
在您的控制器中,您将获得:delete_flag的参数,然后从那里

 Parameters: {"utf8"=>"✓", "authenticity_token"=>"5oWQU+w0jVCQlw8wLvCyKajbBSKpK2sv6RMkSGTE2H8=", "job"=>{"delete_flag"=>"1"}, "commit"=>"Delete"}

HTH

答案 1 :(得分:0)

这是可能的,但请确保当您点击删除按钮时,它不会提交表单提交操作。

您可以考虑将:remote => true用于删除链接,您可以使用以下方法检查记录是新记录还是现有记录:

<Object>.new_record?

例如:如果我有一个名为Job的模型

Job.first.new_record? #=> false

Job.new.new_record?   #=> true

Ex:类似的东西(未测试:D,只是为了给你一个想法)

<%= form_for(@job) do |f| %>
  #your form content
  <%= f.submit %>
  <%= (link_to 'Destroy', @job, :remote => true, method: :delete, data: { confirm: 'Are you sure?' }) unless @job.new_record? %>
<% end %>