用于删除无效数据的按钮。

时间:2017-09-08 07:43:11

标签: ruby-on-rails ruby

我从网站上抓取产品并将其插入我的数据库。所有产品都在我的“查看”页面上正确列出,但我似乎无法使用删除按钮。我的佣金路线中有重复的原因是我最初手动写出路线然后使用

resources :ibotta

我刚尝试移动资源:ibotta"在路线的顶部,但这不起作用。当我点击" Destroy"按钮,它带我的链接是

" 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

Rake Routes

              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 个答案:

答案 0 :(得分:1)

尝试传递您的对象并使用delete方法发出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的原因,你并没有在application.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:意外@

我不确定原因。

或者,如果您希望在没有此文件的情况下继续(我不建议这样做),您可以轻松地更改link_to帮助程序,对于button_to帮助程序,例如:

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

什么&#39; ll将提供不同的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>

请注意,您的控制器中有一个销毁和删除方法,我想您需要的是destroyresources路径会使用该方法。

Here是您可以看到它正常运行的存储库。