2016-11-20 16 views
1

こんにちは私はレールとMVCを初めて使いました。今は、in_draftからpublishedに移行するためにAASMを使用しています。 私はレールコンソールで変更を行うことができることだが、のlink_toを使用しようとすると、私は疑問にエラーが発生しました[PUT] "/ articles"と一致するルートはありませんが、ルートにputルートを含めました

`#/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 

答えて

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}」を使用しても機能しません。二重引用符の中に一重引用符を入れるなどの作業を行うこともできます。ここでは、一重引用符の二重引用符が機能しない場合があります。たとえば、 "'最高の記事は' +#{article.id} 'のIDです – Jeremy

0

railsへようこそ。 memberを使用してRESTful putアクションを追加することをお勧めします。

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

Rails routingは、現在与えられたルートの問題、してくださいas: :public_articleを解決します。

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

あなたは本当に、本当に接近している

関連する問題