2

コントローラーに標準の足場を使用しています。

# DELETE /addresses/1
# DELETE /addresses/1.json
def destroy
  @address = Address.find(params[:id])
  @address.destroy

  respond_to do |format|
    format.html { redirect_to addresses_url }
    format.json { head :no_content }
  end
end

私のアプリケーションレイアウトファイル:

<!DOCTYPE html>
<html>
<head>
    <title>DemoRailsApp</title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>

    <%= csrf_meta_tags %>
</head>
<body>
  <div data-role="page" data-theme="a" data-fullscreen="true">
    <%= yield %>
  </div>

index.html.erb

<div data-role='header'>
<h1>Addreses</h1>
<%= link_to "Add" , new_address_path, "data-icon"=> "plus" , "class" => "ui-btn-right" %>
</div>

<div class="content" data-role="content">
<ul data-role="listview">
    <% @addresses.each do |address| %> 
    <li>
        <%= link_to address.address1, edit_address_path(address) %>
        <%= link_to 'Destroy', address, confirm: 'Are you sure?', method: :delete, "data-icon" => "delete" %>
    </li>
    <% end %>
</ul>
</div>
</body>
</html>

削除リンクをクリックすると、確認または削除ではなく、ショー ビューが表示されます。非常に混乱。

Edit2: <%= javascript_include_tag 'application' %> を application.html.erb ファイルに追加し、レコードは削除されましたが、ページの読み込み中にエラーが発生し、サーバーから次のメッセージが表示されます:

Started DELETE "/addresses/3" for 127.0.0.1 at 2012-04-08 19:32:41 -0500
Processing by AddressesController#destroy as JS
  Parameters: {"id"=>"3"}
  Address Load (6.8ms)  SELECT "addresses".* FROM "addresses" WHERE "addresses"."id" = ?   LIMIT 1  [["id", "3"]]
   (0.2ms)  begin transaction
  SQL (57.5ms)  DELETE FROM "addresses" WHERE "addresses"."id" = ?  [["id", 3]]
       (24.6ms)  commit transaction
Redirected to http://localhost:3000/addresses
Completed 302 Found in 108ms (ActiveRecord: 89.1ms)


Started GET "/addresses/3" for 127.0.0.1 at 2012-04-08 19:32:41 -0500
Processing by AddressesController#show as HTML
  Parameters: {"id"=>"3"}
  Address Load (0.1ms)  SELECT "addresses".* FROM "addresses" WHERE "addresses"."id" = ?     LIMIT 1  [["id", "3"]]
Completed 500 Internal Server Error in 2ms

ActiveRecord::RecordNotFound (Couldn't find Address with id=3):
  app/controllers/addresses_controller.rb:16:in `show'


  Rendered /Users/<username>/.rvm/gems/ruby-1.9.3-preview1@railsnexttutorial/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (3.4ms)
  Rendered /Users/<username>/.rvm/gems/ruby-1.9.3-preview1@railsnexttutorial/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.2ms)
  Rendered /Users/<username>/.rvm/gems/ruby-1.9.3-preview1@railsnexttutorial/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (16.8ms)


Started DELETE "/addresses" for 127.0.0.1 at 2012-04-08 19:32:42 -0500

ActionController::RoutingError (No route matches [DELETE] "/addresses"):
  actionpack (3.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.2) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.2) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.2) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/static.rb:61:in `call'
  railties (3.2.2) lib/rails/engine.rb:479:in `call'
  railties (3.2.2) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.2) lib/rails/rack/log_tailer.rb:14:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /Users/<username>/.rvm/rubies/ruby-1.9.3-   preview1/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
  /Users/<username>/.rvm/rubies/ruby-1.9.3-preview1/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
  /Users/<username>/.rvm/rubies/ruby-1.9.3-preview1/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'


  Rendered /Users/<username>/.rvm/gems/ruby-1.9.3-preview1@railsnexttutorial/gems/actionpack- 3.2.2/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.7ms)

編集: これはサーバーからの応答です。削除はGETではなくDELETEだと思いましたか?

Started GET "/addresses" for 127.0.0.1 at 2012-04-07 21:26:13 -0500
Processing by AddressesController#index as HTML
  Address Load (0.9ms)  SELECT "addresses".* FROM "addresses" 
  Rendered addresses/index.html.erb within layouts/application (8.7ms)
Completed 200 OK in 47ms (Views: 22.2ms | ActiveRecord: 0.9ms)
[2012-04-07 21:26:14] WARN  Could not determine content-length of response body. Set     content-length of the response or set Response#chunked = true


Started GET "/addresses/1" for 127.0.0.1 at 2012-04-07 21:26:16 -0500
Processing by AddressesController#show as HTML
  Parameters: {"id"=>"1"}
  Address Load (0.3ms)  SELECT "addresses".* FROM "addresses" WHERE "addresses"."id" = ?      LIMIT 1  [["id", "1"]]
  Rendered addresses/show.html.erb within layouts/application (2.4ms)
Completed 200 OK in 7ms (Views: 4.6ms | ActiveRecord: 0.3ms)
[2012-04-07 21:26:16] WARN  Could not determine content-length of response body. Set    content-length of the response or set Response#chunked = true
4

2 に答える 2

4

同様の問題がありました。私の解決策は次のとおりでした:

1- application.js に以下が含まれていることを確認します

//= require jquery
//= require jquery_ujs

2- application.js がアプリケーションのレイアウトに含まれていることを確認します

= javascript_include_tag 'application'

3-アプリケーションレイアウトにも含めていた古いバージョンのJQueryを削除します(これには少し戸惑いました)

それが役立つことを願っています!

于 2012-04-28T09:32:51.997 に答える
1

いくつかのデータを設定するconfirmか、delete単に設定します-*属性。これらの属性を使用して目的の動作を作成するJavascriptをページに配置するのはあなた次第です。javascriptがなければ、それは単なる古いリンクです。

jquery-ujsライブラリはこれを提供します。

于 2012-04-08T13:13:12.323 に答える