我正在編寫一個博客,它有兩種類型的文章:「草稿」和「發佈」。我正在使用aasm
寶石來使文章從草稿過渡到已發佈或已發佈。還有三種類型的用戶:「普通讀者」,「編輯」和「管理員」。沒有路線匹配[PUT],但我在routes.rb中包含「資源」
當用戶撰寫文章時,管理員可以評估是否發佈它們。爲了實現這一點,管理員有一個觀點,他們可以看到草稿和發表的文章。
的問題是,當我嘗試發佈的文章中,我得到沒有路由匹配[PUT]「/篇」錯誤,無論我在routes.rb
添加resources :articles
。
我寫的代碼如下:
的routes.rb
resources :categories
resources :articles do
resources :comments, only: [:create, :update, :destroy, :show]
end
devise_for :users
root 'welcome#index'
get '/dashboard', to: 'welcome#dashboard'
put '/articles/:id/publish', to: 'articles#publish'
articles_controller.rb
...
def publish
@article.publish! # Article transition from draft to published.
redirect_to @article
end
...
dashboard.html.erb
...
<% @articles.each do |art| %>
<h1><%= link_to art.title, art, method: :get %> | id = <%= art.id %> | user_id = <%= art.user_id %></h1>
<div>
<%= art.body %> - <%= link_to "Eliminar", art, method: :delete %>
<% if art.may_publish? %>
- <%= link_to "Publicar", '/articles/#{article.id}/publish' , method: :put %>
<% end %>
</div>
<% end %>
...
我看不到爲什麼我得到這個錯誤,如果我包括文章資源。如果你需要我包含更多的代碼,請不要猶豫,問我。
謝謝先進。
$ rake路線告訴你什麼?你也許可以在你的'resources:articles'塊中做'member do:publish end'。 – rdnewman