没有路由匹配 [PUT] "/articles" 但我在路由中包含了 put 路由

No route matches [PUT] "/articles" but I included the put route in routes

大家好,我是 rails 和 MVC 的新手,但我正在努力学习。现在我正在使用 AASM 从 in_draft 过渡到已发布。 我能够在 rails 控制台中进行更改,但是当我尝试使用 link_to 时,我在问题

中遇到了错误
`#/app/views/welcome/dashboard.html.erb
<% if article.may_publish? %>
<%= link_to 'Publish', '/articles/#{article.id}/publish', method: :put, class: "alert-link" %>
<%end%>

这是我的路线

put '/articles/:id/publish', to: 'articles#publish'

还有我的articles_controller发布方法

def publish
    @article.publish!
    redirect_to @article
end

欢迎来到rails。我建议您使用 member 添加 RESTful put 操作。 Rails routing

resources :articles do
  put :publish, on: :member
end

要解决您当前给定的路线问题,请as: :public_article

put '/articles/:id/publish', to: 'articles#publish', as: :public_article

享受

你真的非常非常接近!您需要使用双引号才能使用 #{} 进行推断。

<%= link_to 'Publish', '/articles/#{article.id}/publish', method: :put, class: "alert-link" %>

应该是:

<%= link_to 'Publish', "/articles/#{article.id}/publish", method: :put, class: "alert-link" %>