2017-09-08 76 views
1

我已經從網站上抓取產品並將其插入我的數據庫。所有的產品都在我的View頁面上正確列出,但我似乎無法得到刪除按鈕的工作。有在我耙路線重複的原因是,我最初寫手動路線了,但再使用按鈕刪除單個數據不起作用。

resources :ibotta 

我只是試圖移動「資源:ibotta」的路線上,但沒有工作。當我點擊「消滅」按鈕,它需要我的鏈接是

https://rails-tutorial2-chriscma.c9users.io/ibotta.14738

任何幫助非常感謝,謝謝。

查看

<h1>Show Page for iBotta</h1> 

<h3><%= @products.length %> products in the iBotta DB</h3> 

<% @products.each do |x| %> 
    <p>Title: <a href=<%=x.link%>><%= x.title %></a> </p> 
    <p>Value: <%= x.values %> </p> 
    <p>Store: <%= x.store %> </p> 

    <%= link_to 'Destroy', ibotta_path(x.id), 
       method: :delete %> 

<% end %> 

在控制器方法

def destroy 
    Ibotta.find(params[:id]).destroy 
    redirect_to ibotta_path 
end 

耙路線

   ibotta_save GET /ibotta/save(.:format)     ibotta#save 
       ibotta_show GET /ibotta/show(.:format)     ibotta#show 
      ibotta_delete GET /ibotta/delete(.:format)     ibotta#delete 

        ibotta GET /ibotta(.:format)      ibotta#index 
          POST /ibotta(.:format)      ibotta#create 
       new_ibottum GET /ibotta/new(.:format)     ibotta#new 
      edit_ibottum GET /ibotta/:id/edit(.:format)    ibotta#edit 
        ibottum GET /ibotta/:id(.:format)     ibotta#show 
          PATCH /ibotta/:id(.:format)     ibotta#update 
          PUT /ibotta/:id(.:format)     ibotta#update 
          DELETE /ibotta/:id(.:format)     ibotta#destroy 

回答

1

嘗試只通過你的objec T和使用刪除方法,使一個DELETE請求,如:

<% @products.each do |product| %> 
    <p>Title: <%= link_to product.title, product.link %></p> 
    <p>Value: <%= product.values %></p> 
    <p>Store: <%= product.store %></p> 

    <%= link_to 'Destroy', product, method: :delete %> 
<% end %> 

在創建a標籤的情況下,可以使用link_to Rails的幫手。


正如我在你的項目中看到的,你沒有一個layouts/application.html.erb文件,這就是爲什麼你呈現的一切不被yield在這個文件中傳遞,而你不添加沒有在你的應用程序。 js或css文件,因此,您沒有jQuery或jQuery UJS。這使得每次你點擊錨標籤來刪除這個元素,執行一個GET請求,無論你是否指定要使用的方法。

這可以通過添加文件夾和文件,與任何項目,與最初的結構來解決:

<!DOCTYPE html> 
<html> 
<head> 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 
    <%= yield %> 
</body> 
</html> 

注意,如果你這樣做,你需要註釋你javascripts/ibotta.coffee內容,否則你會得到錯誤:

SyntaxError: [stdin]:6:8: unexpected @

而我不知道爲什麼。

或者,如果你願意繼續沒有此文件(我不推薦),您可以輕鬆地只是改變你的link_to幫手,爲button_to幫手,如:

<%= button_to 'Destroy', x, method: :delete %> 

什麼就給土特產品不同的HTML結構,但工程上刪除記錄:

<form class="button_to" method="post" action="/ibotta/id"> 
    <input type="hidden" name="_method" value="delete"> 
    <input type="submit" value="Destroy"> 
    <input type="hidden" name="authenticity_token" value="token"> 
</form> 

注意你有破壞和刪除你的控制器的方法,我想你需要的是destroy,這是由您的resources糅工商業污水附加費。

Here是您可以看到它工作的存儲庫。

+0

我調整了一點這個例子,使它更具表現力,但是你在這裏使用了'@products.each do | x |',所以你可以做'<%= link_to'Destroy', x,方法::刪除%>。 –