0
has_many:throughアソシエーションを使用してお気に入りに追加機能を実装しました。ユーザーはroom.html.erbビューで部屋を好きにしたり、好き嫌いを付けたりできるようになりました。別のコントローラーとビューでは、ログインしているユーザーのすべてのお気に入りルームを表示したいと思う。「不快な行動」のルート/コントローラの問題
そして、ユーザーがお気に入りの部屋をすべて削除できるようにしたいと考えています。すべての部屋を展示することは問題ではありません。私は不快なボタンでこの作業をすることはできません。
どうすればこの作品を作成できますか?
rooms_controller.rb
before_action :set_room, only: [:show, :favorite]
...
def favorite
type = params[:type]
if type == "favorite"
current_user.favorites << @room
redirect_to wishlist_path, notice: 'You favorited #{@room.listing_name}'
elsif type == "unfavorite"
current_user.favorites.delete(@room)
redirect_to wishlist_path, notice: 'Unfavorited #{@room.listing_name}'
else
# Type missing, nothing happens
redirect_to wishlist_path, notice: 'Nothing happened.'
end
end
private
def set_room
@room = Room.find(params[:id])
end
static_pages_controller.rb
def wishlist
end
wishlist.html.erb
<div>
<% current_user.favorites.each do |room| %>
<%= room.listing_name %>
<%= link_to "unfavorite", favorite_room_path(@room, type: "unfavorite"), method: :put %>
<% end %>
</div>
routes.rbを
Rails.application.routes.drawあなたの代わりに '部屋' の '@room' を使用しているwhishlist.html.erbで
root 'static_pages#welcome'
get 'wishlist' => 'static_pages#wishlist'
resources :rooms, only: [:index, :show] do
resources :reservations, only: [:create]
resources :reviews, only: [:create, :destroy]
end
resources :rooms do
put :favorite, on: :member
end
ああ、良いキャッチ! –
ありがとう!これを見ることができませんでした! – trickydiddy
あなたは歓迎です:) – kriskova