ruby 2.1.3
Rails 4.2.3
ローカルでのPCはmac
sakuraはVPSのcentos
nginx1.8.0
unicorn
Deviseのgem設定済み。
ご質問の内容
Destroyがうまく動きません。
local環境(http://localhost:3000/)では問題がなく、production環境(VPS)でエラーが出ます。
Userに複数のaddressを持たせており、そのaddressを削除させたいと考えております。
エラー内容
ActiveRecord::RecordNotFound in AddressesController#show Couldn't find User with 'id'=15
↑本当はid = 15はuserではなくaddressのidとなるはずなのですが。。。userのidとして処理されています。
routes.rb
address GET /addresses/:id(.:format) addresses#show edit_address GET /addresses/:id/edit(.:format) addresses#edit DELETE /addresses/:id(.:format) addresses#destroy
addresses_controller.rb
def show user = User.find(params[:id]) @addresses = user.addresses end def destroy Address.find(params[:id]).destroy redirect_to :back, notice: '住所を削除しました。' end
show.html.erb view側です。
<% @addresses.each do |addresses| %> <%= addresses.name %> <%= link_to 'Edit', edit_address_path(addresses.id) %> <%= link_to 'Destroy', address_path(addresses.id), method: :delete, data: { confirm: 'Are you sure?' } %> <% end %>
↑のEditの方は問題なくaddressのidで編集出来ます。
何か抜けておりますでしょうか?
11/11日追加
local環境とproduction環境のログを確認してみました。
localは処理を走らせると
Started DELETE
となりますが
production
Started GET
となります。
なのでroutes.rbでdeleteを再度記載してみましたがStarted GETとなります。
delete "addresses/:id", to: 'addresses#destroy', as: 'addressesdestroy'
bundle exec rake routes
addressesdestroy DELETE /addresses/:id(.:format) addresses#destroy
↑上記設定後はunicornを再起動しております。
何か方法御座いませんでしょうか?
宜しくお願いします。
11/11日追加
http://stackoverflow.com/questions/18154916/rails-4-link-to-destroy-not-working-in-getting-started-tutorial
と
http://syaka-syaka.blogspot.jp/2015/04/railslinktomethod-deleterailsjs.html
を拝見し
application.jsを確認しました。
//= require jquery //= require jquery_ujs
↑両方設定済でした。
宜しくお願いします。
あなたの回答
tips
プレビュー