【问题标题】:Routing error - No route matches [GET] error using activerecord-reputation-system gem in rails路由错误 - 在 Rails 中使用 activerecord-reputation-system gem 时没有路由匹配 [GET] 错误
【发布时间】:2015-06-22 10:50:22
【问题描述】:

我将向我的 Rails 应用程序添加投票系统,我尝试使用 activerecord-reputation-system gem 运行信誉系统,并关注railscasts #364 视频。

我正在为路由错误而苦苦挣扎,当我点击 upvote 或 downvote 时,它​​显示错误“No route matches [GET] "/haikus/1/vote"

/config/routes.rb:

Youhaiku::Application.routes.draw do
  get 'signup', to: 'users#new', as: 'signup'
  get 'login', to: 'sessions#new', as: 'login'
  get 'logout', to: 'sessions#destroy', as: 'logout'

  resources :users
  resources :sessions
  resources :haikus do
    member { post :vote }
  end

  root to: 'haikus#index'
end

/app/controllers/haikus_controller.rb:

def vote
  value = params[:type] == "up" ? 1 : -1
  @haiku = Haiku.find(params[:id])
  @haiku.add_evaluation(:votes, value, current_user)
  redirect_to :back, notice: "Thank you for voting!"
end

/app/views/haikus/_haiku.html.erb:

<div class="haiku">
  <%= simple_format haiku.content %>
  <em>
    -- <%= haiku.user.name %>
    | <%= link_to "up", vote_haiku_path(haiku, type: "up"), method: "post" %>
    | <%= link_to "down", vote_haiku_path(haiku, type: "down"), method: "post" %>
  </em>
</div>

我查看了这个issue,但这对我没有帮助。所以,我真的需要这方面的帮助。

【问题讨论】:

  • 试试这个&lt;%= link_to "up", vote_haiku_path(haiku, type: "up"), method: :post %&gt;
  • 是的,我试过了,但它不适合我!
  • 你能粘贴你在渲染这个链接后得到的html吗?
  • 当我点击“Upvote”链接时,出现以下错误 Routing Error No route matches [GET] "/haikus/1/vote" 尝试运行 rake 路由以获取有关可用路由的更多信息。跨度>
  • 试试这个:&lt;a rel="nofollow" data-method="post" href="&lt;%=vote_haiku_path(haiku, type: "up")%&gt;"&gt;&lt;/a&gt;

标签: ruby-on-rails ruby activerecord


【解决方案1】:

从您收到的错误中可以看出,您正在发送 GET 请求,Rails 正在等待 POST 执行此操作。您需要确保使用 link_to 生成正确的 HTML。

要实现此检查,请检查您链接上的data-method 是否显示“发布”。为此,您可以右键单击 up\down 投票链接并按检查元素。

如果它不存在,但您的部分视图显示 method: "post",请尝试按照 Pardeep 在 cmets 中的建议将其更改为 method: :post

【讨论】:

  • 即使这不起作用&lt;a rel="nofollow" data-method="post" href="&lt;%=vote_haiku_path(haiku, type: "up")%&gt;"&gt;&lt;/a&gt;
  • 请让我们知道您在页面上获得的 HTML 内容
  • 获取下面的html代码
  • 我收到了这个&lt;a href="/haikus/5/vote?value=1" data-method="post" rel="nofollow"&gt;up&lt;/a&gt;
  • 我可以通过在我的app/views/layouts/application.rb 中注释掉&lt;%= javascript_include_tag 'application', 'data-turbolinks-track' =&gt; true %&gt; 来复制它。请检查您的页面上带有投票链接的标题。
猜你喜欢
  • 2015-04-24
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
相关资源
最近更新 更多