方法无法从视图中读取

时间:2016-03-15 18:32:08

标签: ruby-on-rails ruby-on-rails-4

我正在使用https://github.com/ryanto/acts_as_votable gem。我是一个错误:

  

PostsController #index中的NoMethodError    - #<#:0x007fb5010f34b8>

的未定义方法`upvote_post_path'

基本上我所做的是在我的视图中为特定任务添加链接。

  <%= link_to "upvote", upvote_post_path(post), method: put %>

类似的链接:

<%= link_to "edit", edit_post_path(post)%>

在同一个视图中工作得很好。这是我控制器中这两种方法的一部分:

  def destroy
    @post = current_post
    @post.destroy
    flash[:success] = "Post deleted"
    redirect_to request.referrer || root_url
  end

  def upvote
    @post.liked_by current_user
  end

这些是我的路线:

  resources :users
  resources :posts do
    put 'upvote', to: 'posts#upvote'
  end

我无法弄清问题在哪里。

3 个答案:

答案 0 :(得分:4)

您在upvote_post_path视图中的来电应该是:

post_upvote_path(post)代替upvote_post_path(post)

应如下所示:

<%= link_to "upvote", post_upvote_path(post), method: put %>

答案 1 :(得分:1)

你的路线呼叫应该是
$("#btnStart").click(function () { myWindow = window.open(baseUrl + "/EvernoteProvider/Authorize", '_blank', 'width=500,height=500, scrollbars=no,resizable=no'); myWindow.focus(); }); 代替post_upvote_path(post)

答案 2 :(得分:1)

根据佣金路线

 <%= link_to "upvote", post_upvote_path(post), method: put %>