Ruby on rails 删除在Rails 3中不起作用的操作

Ruby on rails 删除在Rails 3中不起作用的操作,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我们有一个要求,即所有产品都在每个产品名称旁边显示复选框 index.html.erb <%= form_tag users_path, :method => 'get' do %> <table> <tr> <td><input type="checkbox" name="cb1", id="cb1" /> </td> <td> Mobile

我们有一个要求,即所有产品都在每个产品名称旁边显示复选框

index.html.erb

<%= form_tag users_path, :method => 'get' do %> 
  <table>  
    <tr>   
      <td><input type="checkbox" name="cb1", id="cb1" />   </td>   
      <td>    Mobiles   </td>  
    </tr>  
    <tr>   
      <td><input type="checkbox" name="cb2", id="cb2" />   </td>   
      <td> Laptops   </td>  
    </tr>  
    <tr>   
      <td>    
        <%= link_to 'Add User', "/users/new", :method => :get, :target => "_blank"%>       </td>   
     <td>  
        <%= link_to 'Delete User(s)',  :method => :delete, :onclick =>
> "onDeleteClick();" %>   
     </td>  
  </tr> 
  </table> 
  <% end %>
“get”do%>
手机
笔记本电脑
:get,:target=>“\u blank”%>
:delete,:onclick=>
>“onDeleteClick();”%>
我有一个javascript函数,它可以让我得到所选产品的列表,我正在使用id的子字符串,即如果cb1是复选框的id,那么1是产品id,我正在形成产品id列表,如1,2,3

ProductsController.rb 在产品控制器中删除操作

def delete
    User.delete( params[:selecteduserids])
    render :action => "index"
 end

Note: <%= hidden_field_tag :selecteduserids, params[:selecteduserids] %>
def删除
User.delete(参数[:selectedUserId])
呈现:操作=>“索引”
结束
注:
Javascript:

function onDeleteClick()
{   
    var objlist = document.getElementById('dvproductdetails');
    var aList = objlist.getElementsByTagName('input');  
    var nLen = aList.length;
    var nSelCnt = 0;

    var arSelectedProductIDs = new Array();

    for (var n=0; n<nLen; n++) 
    {
        var oChk = aList[n];

        if (oChk.type == 'checkbox' && oChk.id.substring( 0, 2) == 'cb' && oChk.checked)
        {           
            arSelectedProductIDs[nSelCnt] = oChk.id.substring( 2, oChk.id.toString().length);
            nSelCnt = nSelCnt + 1;          
        }
    }

    if( arSelectedProductIDs.length > 0)
    {
        document.getElementById('selectedproductids').value = arSelectedProductIDs.toString();
        //alert(arSelectedProductIDs.toString());
        return true;
    }
    else
    {
        alert('Please select the Product to delete.');      
    }
    return false;
}
函数onDeleteClick() { var objlist=document.getElementById('dvproductdetails'); var aList=objlist.getElementsByTagName('input'); var nLen=列表长度; var-nslcnt=0; var arSelectedProductIDs=新数组(); 对于(变量n=0;n 0) { document.getElementById('selectedProductId')。value=arselectedProductId.toString(); //警报(arSelectedProductId.toString()); 返回true; } 其他的 { 警报('请选择要删除的产品'); } 返回false; } 问题:当我单击删除链接时,操作未执行。
有谁能指导我解决这个问题吗?

正如Marc所说,看到HTML/Javascript响应远程删除操作会很有帮助。同时,以下是一个可行的实施方案:

查看:

<%= link_to 'Destroy', model_path( model.id ), { :remote => true, :confirm => "#{translate( :are_you_sure )}", :method => :delete, :class => 'button' } %>
<a href="/model/1" class="button" data-confirm="Are You Sure?" data-method="delete" data-remote="true" rel="nofollow">Destroy</a>
  def destroy
    model = Model.find( params[ :id ] )
    model.destroy
    respond_to do | format |
      logger.info { "DESTROY: #{format}" }
      format.html { render :layout => false, :inline => "#{model.id}" }
      format.json  { head :ok, data => model.id }
    end
  end
编辑

此外:


正如Marc所说,看到HTML/Javascript响应远程删除操作会很有帮助。同时,以下是一个可行的实施方案:

查看:

<%= link_to 'Destroy', model_path( model.id ), { :remote => true, :confirm => "#{translate( :are_you_sure )}", :method => :delete, :class => 'button' } %>
<a href="/model/1" class="button" data-confirm="Are You Sure?" data-method="delete" data-remote="true" rel="nofollow">Destroy</a>
  def destroy
    model = Model.find( params[ :id ] )
    model.destroy
    respond_to do | format |
      logger.info { "DESTROY: #{format}" }
      format.html { render :layout => false, :inline => "#{model.id}" }
      format.json  { head :ok, data => model.id }
    end
  end
编辑

此外:


请同时显示控制器和javascript的代码。请同时显示控制器和javascript的代码。感谢您的回复。但我的问题是,如何收集用户选择的复选框列表并一次性删除它?销毁操作响应AJAX,所以您只需使用JQuery—类似$((“输入:checkbox[name=type]:checked”)。每个(function(){//callDestroy()});或者,您可以绑定到select()事件并将所选框添加到数组中,该数组在提交时处理。(或从该数组中删除未选中的)。感谢您的回复。但我的问题是,如何收集用户选择的复选框列表并一次性删除它?销毁操作响应AJAX,所以您只需使用JQuery—类似$((“输入:checkbox[name=type]:checked”)。每个(function(){//callDestroy()});或者,您可以绑定到select()事件并将所选框添加到数组中,该数组在提交时处理。(或从该数组中删除取消选择的对象)。