3

私はまだ RoR に慣れていないので、button_to delete ボタンでオブジェクトを削除しようとしています。私が書いたコードでは、destroy メソッドの /needs/:id にアクセスしようとすると、/needs/4 ではなく /needs.4 に移動します。「ニーズ」は、needs-controller と needs new.html.erb ページを介して作成され、ユーザーの表示ページに表示されます。そこから、ユーザーは自分のニーズを削除できるはずです。 これは私が得るエラーです:

ActiveRecord::RecordNotFound in NeedsController#destroy

Couldn't find Need with id=@userneed
Rails.root: /Users/mcn/Dropbox/Code/GA/Projects/GA_projects/p4_final/flatcircle

Application Trace | Framework Trace | Full Trace
app/controllers/needs_controller.rb:20:in `destroy'
Request

Parameters:

{"_method"=>"delete",
 "authenticity_token"=>"Fv6EcMNJQEjtw1naQVMw77lkCGjTJR7ui2FD53aoZfc=",
 "id"=>"@userneed"}

そして、これは私のコードです:

Needs_controller:

def destroy
    Need.find(params[:id]).destroy
    redirect_to :controller => :users, :action => :show, :id => current_user.id, :flash => { :success => "Your search post was deleted." }
  end

ユーザーの表示ページ button_to 行:

  <%= button_to "delete", '/needs/@userneed', method: :delete, data: { confirm: "You sure?"} %>

そして同じページに:

@userneed = @current_user.needs.last

Routes.rb

delete "/needs/:id", to: "needs#destroy"
get "/needs/:id", to: "needs#show"

非常に困っているので、解決方法をご存知の方教えてください!

4

3 に答える 3

1

わかりましたので、これが私がそれを修正した方法です:

<%= button_to "delete", {:controller => :needs, :action => "destroy", :id => current_user.needs.last.id}, :method => :delete, data: { confirm: "You sure?"} %>

だから私はそれが2つのことだったと思います:1)適切な場所に中かっこ(中かっこの中のものの後に来る引数がまだあるのでそれらが必要です2)_path()の方法ではなく、この方法でIDを指定します

于 2013-12-24T15:18:34.500 に答える
0

試す<%= button_to "delete", '/needs/<%= @userneed %>', method: :delete, data: { confirm: "You sure?"} %>

@userneed = @current_user.needs.last.id

しかし、ボタンの代わりにリンクを使用するのが最善だと思います...<a href="<%=model_path(@model) %>" data-method="delete" data-confirm="are you sure?">delete</a>

于 2013-12-24T13:01:51.627 に答える