0

私はacts_as_votable gemに問題があります。シンプルなフォーラム アプリがあり、投稿に賛成票と反対票を投じる機能が必要です。私はこのacts_as_votable gemに使用しました。投稿コントローラーに 2 つのメソッドを追加しました。

def upvote
    @post = post.find(params[:id])
    @post.liked_by current_user
    redirect_to forum_topic_path(@post.topic.forum, @post.topic)
  end

  def downvote
    @post = post.find(params[:id])
    @post.downvote_from current_user
    redirect_to forum_topic_path(@post.topic.forum, @post.topic)
  end

私のルートは:

  resources :topics, except: :index do 
    resources :posts do 
      member do 
        put "like", to: "posts#upvote"
        put "dislike", to: "posts#downvote"
      end
    end
  end

そして、私のトピックショーアクションビューには、次のリンクがあります。

= link_to "Upvote", like_topic_post_path(post.topic.id,post.id, method: :put) 
= link_to "Downvote", dislike_topic_post_path(post.topic.id,post.id, method: :put)

賛成票または反対票をクリックしようとすると、リダイレクトされ http://localhost:3000/topics/104/posts/55/like?method=putて次のエラーが表示されます: ルートが一致しません [GET] "/topics/104/posts/55/like" 何が問題なのですか?

4

2 に答える 2

0

以下に示すように、「PUT」の代わりに「GET」メソッドを試してください。

resources :topics, except: :index do 
    resources :posts do 
      member do 
        get "like", to: "posts#upvote"
        get "dislike", to: "posts#downvote"
      end
    end
  end
于 2013-10-16T08:21:01.333 に答える