0

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 %>
4

1 に答える 1

1

<% %> の = を忘れたようです。次のようにする必要があります。

<%= link_to "favorite", favorite_location_path(@location, type: "favorite"), method: :put %>
于 2013-06-30T04:26:26.430 に答える