2016-10-26 3 views
0

Я реализовал функцию добавления в избранное с помощью has_many: через объединение. Теперь пользователь может выбрать любимую или непривлекательную комнату в представлении show.html.erb. На другом контроллере и представлении я хочу отобразить все любимые комнаты зарегистрированного пользователя.Проблемы с маршрутами/контроллерами с «непригодным действием»

И я хочу, чтобы пользователь смог удалить каждую любимую комнату. Показывать все номера не проблема, к сожалению, я не могу сделать эту работу с непривлекательной кнопкой.

Как это сделать?

enter image description here

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 сделать

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 

ответ

2

В whishlist.html.erb вы используете '@room' вместо 'комнаты'. @room устанавливается только в контроллере комнат, а не в контроллере статических страниц.

+0

А, хорошо поймать! –

+0

Спасибо! Не мог этого видеть! – trickydiddy

+0

Добро пожаловать :) – kriskova