开发者

delete action not working in Rails 3

we have an requirement where all the products are displayed with the checkbox next to each product name.

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 %>

i have got an javascript function which gets me the list of products selected and i am using substring of id i.e. if cb1 is the id of checkbox then 1 is the product id and am forming the list of product id's as 1,2,3.

ProductsController.rb delete action in the products controller.

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

Note: <%= hidden_field_tag :selecteduserids, params[:selecteduserids] %>

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 = arSelected开发者_开发问答ProductIDs.toString();
        //alert(arSelectedProductIDs.toString());
        return true;
    }
    else
    {
        alert('Please select the Product to delete.');      
    }
    return false;
}

Issue: When i click on Delete link, the action is not executed. Can anyone guide me in getting solved the issue?


As Marc said, it would be helpful to see the HTML/Javascript responding to the remote delete action. In the meantime, here is a working implementation:

VIEW:

<%= link_to 'Destroy', model_path( model.id ), { :remote => true, :confirm => "#{translate( :are_you_sure )}", :method => :delete, :class => 'button' } %>

Generated HTML:

<a href="/model/1" class="button" data-confirm="Are You Sure?" data-method="delete" data-remote="true" rel="nofollow">Destroy</a>

Javascript required:

JQuery

JQuery-UJS

CONTROLLER:

  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

EDIT

Also:

$("input:checkbox[name=type]:checked").each(function()
{
    jQuery.ajax( "/model/1/delete" );
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜