首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Favorite_posts:“无法找到带有ID的Post”

Rails Favorite_posts:“无法找到带有ID的Post”
EN

Stack Overflow用户
提问于 2016-12-20 23:07:14
回答 2查看 90关注 0票数 0

BLUF:尝试创建一个Favorite_posts特性;我可以通过手动设置Rails控制台中的ActiveRecord来验证它是否工作,

但是我创建的链接给出了一个错误:“找不到没有ID的Post”

表格:

代码语言:javascript
复制
<% 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 %>

财务主任:

代码语言:javascript
复制
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

模型:

代码语言:javascript
复制
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'

路线:

代码语言:javascript
复制
  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]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-21 21:50:41

修正:我从一个_post部分项目中重构出了这个表单,当我把它放回去的时候,它工作得很好。我认为后端只是为那个控制器设置的,而且我不太关心如何正确地重构它

票数 0
EN

Stack Overflow用户

发布于 2016-12-20 23:16:10

你试过把@post.id而不是@post传递到你的网址,

代码语言:javascript
复制
favorite_posts_path(id: @post.id)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41252631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档