2016-11-20 125 views
1

您好我是新來的鐵軌和MVC,但我努力學習。現在我正在使用AASM進行從in_draft到發佈的轉換。 我能夠使導軌控制檯的變化,但嘗試使用的link_to,當我在這個問題得到了錯誤沒有路線匹配[PUT]「/文章」,但我包括放置路線在路線

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

這是MI路線

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

而且我articles_controller發佈方法

def publish 
    @article.publish! 
    redirect_to @article 
end 

回答

0

你是真的,真的非常接近!您需要使用雙引號才能使用#{}進行推斷。

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

應該是:

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

感謝那是錯誤,你幫了我很多,你能解釋一下我的「」和「」之間的區別。我習慣使用'',但我不知道另一個。 –

+0

根據我的理解,唯一的區別是,假定文章存在,使用「#{article.id}」工作,但使用'#{article.id}'不起作用。您還可以執行諸如在雙引號內放置單引號的內容,其中雙引號內的雙引號可能不起作用。例如「'最好的文章的ID爲'+#{article.id}」 – Jeremy

0

歡迎來到鐵軌。我想建議您使用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 

享受