我有一個Entry
模型,其布爾列published
,默認設置爲false
。我寫在模型下面的方法:發佈方法無法正常工作
def self.publish
self.update(published: true)
end
,並在我的控制器我有
def publish
@entry = Entry.find(params[:id]
@entry.publish
redirect_to entries_path
end
(我想使它類似destroy
方法的模型調用)。最後,我認爲我有這樣的:
<%= link_to "Publish", entries_path, method: :publish %>
但是,當我點擊鏈接,該請求被create
方法處理,並返回我下面的錯誤:
ActionController::ParameterMissing in Multiflora::EntriesController#create
param is missing or the value is empty: entry
你在這裏做了很多錯誤的事情。您是否已將「發佈」添加到您的路線?請發佈您的'routes.rb'。 – dp7
@dkp我看到..可能有另一種方法來設置布爾值爲真,而不重新發明輪子? @ _ @ – AlexNikolaev94
首先,您需要了解'link_to'中傳遞的'method'是什麼。這是一個HTTP請求,也就是說它可以是'post'或'put'或'delete'或'get'(默認)。你已經分配了'method::publish'這是錯誤的,因爲你正在嘗試更新它應該是'method :: put'。其次,你的路線'entries_path'應該指向你的控制器的'publish'動作。而且,最後'publish'應該是模型中的**實例方法**。目前,它是一種類方法。 – dp7