BLUF:尝试创建一个Favorite_posts特性;我可以通过手动设置Rails控制台中的ActiveRecord来验证它是否工作,
但是我创建的链接给出了一个错误:“找不到没有ID的Post”
表格:
<% if logged_in? %>
<% unless current_user.favorite_posts.exists?(id: @post.id) %>
<%= link_to favorite_posts_path(post_id: @post), method: :post do %>
<span class="glyphicon glyphicon-star-empty"></span>
<% end %>
<% else %>
<%= link_to favorite_post_path(@post), method: :delete do %>
<span class="glyphicon glyphicon-star"></span>
<% end %>
<% end %>
<% end %>财务主任:
class FavoritePostsController < ApplicationController
before_action :logged_in_user, :set_post
def create
Favorite.create(favorited: @post, user: current_user)
respond_to do |format|
format.html
format.js
end
end
def destroy
Favorite.where(favorited_id: @post.id, user_id: current_user.id).first.destroy
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
private
def set_post
@post = Post.find(params[:post_id] || params[:id])
end
end模型:
class Post < ApplicationRecord
belongs_to :user
class Favorite < ApplicationRecord
belongs_to :favorited, polymorphic: true
belongs_to :user
end
class User < ApplicationRecord
extend FriendlyId
friendly_id :name
has_many :posts, dependent: :destroy
has_many :favorites
has_many :favorite_posts, through: :favorites, source: :favorited, source_type: 'Post'路线:
resources :users do
collection do
match 'search' => 'users#index_gyms', via: [:get, :post], as: :search
end
member do
get :following, :followers
get :favorite_posts
end
end
resources :favorite_posts, only: [:create, :destroy]发布于 2016-12-21 21:50:41
修正:我从一个_post部分项目中重构出了这个表单,当我把它放回去的时候,它工作得很好。我认为后端只是为那个控制器设置的,而且我不太关心如何正确地重构它
发布于 2016-12-20 23:16:10
你试过把@post.id而不是@post传递到你的网址,
favorite_posts_path(id: @post.id)https://stackoverflow.com/questions/41252631
复制相似问题