として巻き取るPUT、 レール5.0.0アプリレール5ルーティング、アクションは/ downvote "スキル" をupvoteするacts_as_votable宝石を使用してGET
routes.rbを:
resources :skills do
member do
patch "upvote", to: "skills#upvote"
put "downvote", to: "skills#downvote"
end
end
スキルコントローラ:
def upvote
@skill.upvote_from current_user
redirect_to skill_path(@skill.id)
end
def downvote
@skill.downvote_from current_user
redirect_to skill_path(@skill.id)
end
ビュー:
<%= link_to "Up Vote", upvote_skill_path(skill), method: :put %>
このHTMLを生成します:
<a rel="nofollow" data-method="put" href="/skills/98/upvote">Up Vote</a>
が、リンク、何とかそのGETクリック:損失で
upvote_skill PUT /skills/:id/upvote(.:format) skills#upvote
downvote_skill PUT /skills/:id/downvote(.:format) skills#downvote
イム:
Started GET "/skills/98/upvote" for 192.168.0.2 at 2017-02-23 22:46:07 -0500
ActionController::RoutingError (No route matches [GET] "/skills/98/upvote"):
'すくいルート' 出力が右に見えますが..私が考えることができる唯一の事は、このアプリケーションはAPIのみのアプリケーションとして生活を始めたことですhttp://edgeguides.rubyonrails.org/api_app.htmlしかし、私はすべての " 3.2。しかし、私は何かを逃しているかもしれない?
コントローラで 'upvote'を2回定義しているので、タイプミスがあると思います。 – rogelio
jsコードがa要素のクリックイベントをインターセプトしていますか?そうであれば、e.preventDefault/e.stopPropagationを実行した後、GETを起動し、あなたのdata-method = "put"を無視します。 –
@rogelioはそれを修正しましたが、変更はありません。 – sysconfig