Ruby on Rails アプリでお気に入りの関係を実装しようとしています。ルート、コントローラー、および関係はすべて機能しているように見えますが、link_to "favorite" は機能していません。つまり、エラーはスローされていませんが、html リンクを生成していません。ここの例に従っていますRails 3 & 4 で「お気に入りに追加」を実装します。
コードは次のとおりです。
ルート.rb
resources :locations do
put :favorite, on: :member
end
location_controller.rb
class LocationsController < ApplicationController
....
def favorite
type = params[:type]
if type == "favorite"
current_user.favorites << @location
redirect_to :back, notice: 'You favorited #{@location.name}'
elsif type == "unfavorite"
current_user.favorites.delete(@location)
redirect_to :back, notice: 'Unfavorited #{@location.name}'
else
# Type missing, nothing happens
redirect_to :back, notice: 'Nothing happened.'
end
end
end
user.rb
class User < ActiveRecord::Base
....
# Favorite locations of user
has_many :favorite_locations # just the 'relationships'
has_many :favorites, through: :favorite_locations # the actual recipes a user favorites
....
end
location.rb
class Location < ActiveRecord::Base
....
# Favorited by users
has_many :favorite_locations # just the 'relationships'
has_many :favorited_by, through: :favorite_locations, source: :user
end
ビュー/場所/show.html.erb
<% provide(:title, @location.name) %>
....
<% link_to "favorite", favorite_location_path(@location, type: "favorite"), method: :put %>
<% link_to "unfavorite", favorite_location_path(@location, type: "unfavorite"), method: :put %>