Wenn ich auf upvote Ich erhalte einen Fehler enter image description hereWarum funktioniert meine Arbeit nicht als votable?
Heres meiner routes.rb
Rails.application.routes.draw do
#root 'pages#index'
resources :posts
devise_for :users
# Define root URL
root 'pages#index'
# Define roots for pages
get '/home' => 'pages#home'
get '/user/:id' => 'pages#profile'
get '/explore' => 'pages#explore'
resources :posts do
member do
put "like", to: "posts#upvote" # maybe change it to POSTS??
put "dislike", to: "posts#downvote" # maybe change it to POSTS??
end
end
Und meine posts_controller.rb
class PostsController < ApplicationController
#resources posts
def new
@post = current_user.posts.build
end
def index
@post = Post.all
end
def show
@post = Post.find(params[:id])
end
def create
@user = User.find(session[:user_id])
@post = current_user.posts.build(permit_post)
if @post.save
flash[:success] = "Uploaded"
redirect_to '/'
else
flash[:error] = @posts_errors_full_messages
end
end
def upvote
current_user = User.find_by_id(session[:user_id])
@post = Post.find(params[:id])
current_user.upvotes @post
redirect_to :back
end
def downvote
@post = Post.find(params[:id])
@post.downvote_by current_user
redirect_to :back
end
private
def permit_post
params.require(:post).permit(:image, :title);
end
end
Und ich in meinem Index
<%= link_to like_post_path(@post), method: :put, class: 'upvote' do %>
In der URL es s zeigt myurl.com/posts/%23/like Ich denke, das bedeutet, es ist nicht die ID, wie kann ich es beheben? Diese ist buchstäblich anstrengend ich, danke im voraus
EDIT: I ersetzt @post mit x, da ich eine Schleife wurde mit, dass die URL fest, aber immer noch die gleichen Fehler, das ist Könnte Beitrag nicht ohne ID finden .
noch einen Fehler bekommen wäre, ja ich verwende ersinnen Juwel und ein Tutorial –
hmm ... Sie sollten nicht die URL in der Verbindung zu sehen. Lassen Sie mich etwas überprüfen – trh
Ich erstellte eine App, fügte einen Benutzer hinzu, verwendete Ihren Link, Ihren Controller und Ihre Routen, und es funktioniert gut. Haben Sie vergessen, dass der Server nach der Aktualisierung möglicherweise nicht neu gestartet wurde? – trh