【问题标题】:How to Write link_to for acts_as_votable nested resources?如何为acts_as_votable嵌套资源编写link_to?
【发布时间】:2023-03-06 21:11:01
【问题描述】:

我正在尝试向我的网站添加投票。我在 projects 显示页面中创建并显示了 改进。我正在尝试允许用户对改进进行投票,但我收到了一个错误,我认为这与我链接“赞”按钮的方式有关。

在我的routes.rb 文件中:

  resources :projects do

    resources :improvements do      
        member do
            put "like" => "improvements#upvote"
            put "unlike" => "improvements#downvote"
        end

    end
   end

在我看来:

<%= link_to like_improvement_path(improvement), class: "like", method: :put do %>

Rails 推荐我写:

<%= link_to project_like_improvement_path(improvement), class: "like", method: :put do %>

但这不起作用。所以我尝试在我的routes.rb 中这样做:

  resources :projects do

    resources :improvements

  end

   resources :improvements do       
        member do
            put "like" => "improvements#upvote"
            put "unlike" => "improvements#downvote"
        end
   end

使用原始 link_to,投票有效,但单击投票按钮会将我带到改进显示页面。我想留在项目页面上。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 routes acts-as-votable


    【解决方案1】:

    我遇到了同样的问题。使用原始 routes.rb 的解决方案:

    <%= link_to like_project_improvement_path(improvement.project, improvement), class: "like", method: :put do %>
    

    您可以在改进控制器的 upvote 和 downvote 方法中编写 redirect_to。

    【讨论】:

      【解决方案2】:

      如果:

      <%= link_to like_improvement_path(improvement), class: "like", method: :put do %>
      

      然后在改进控制器的(upvote?)操作中工作,只需执行以下操作:

      redirect_to projects_path 在你做的任何其他事情的最后,你都是明智的。 将“projects_path”更改为页面的正确路径。

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 1970-01-01
        • 2011-07-09
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多