我在我的Client
模型上有一個叫做set_score
的方法。如果我在Model類中有一個自定義方法,當按下鏈接時如何執行它?
在我的Clients#index
視圖上,我想創建一個說明'更新分數'的按鈕/鏈接,所有這些都會將必要的參數發送到該方法並運行它。
我該怎麼做?
我可以使用Rails鏈接助手來做到這一點嗎?
編輯1:
對於它的價值,現在該方法是由callback
(即before_save
)執行。但我想讓用戶能夠手動觸發它。
我在我的Client
模型上有一個叫做set_score
的方法。如果我在Model類中有一個自定義方法,當按下鏈接時如何執行它?
在我的Clients#index
視圖上,我想創建一個說明'更新分數'的按鈕/鏈接,所有這些都會將必要的參數發送到該方法並運行它。
我該怎麼做?
我可以使用Rails鏈接助手來做到這一點嗎?
編輯1:
對於它的價值,現在該方法是由callback
(即before_save
)執行。但我想讓用戶能夠手動觸發它。
@meagar指出,做到這一點的方法是在我的控制器中創建一個自定義操作,然後創建一個路由,然後在我的視圖中使用link_to
中的那條命名路由。
我Client#Controller
現在有這個方法:
def update_score
@client = current_user.clients.find(params[:id])
@client.set_score
respond_to do |format|
if @client.update_attributes(params[:client])
format.html { redirect_to clients_url, notice: 'Score was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @client.errors, status: :unprocessable_entity }
end
end
end
我routes.rb
現在有這條路線:
match ':controller/update_score/:id' => 'clients#update_score', :as => :update_score
而且在我看來,我只是用這個鏈接,其中client
是產生一個局部變量由塊。
<%= link_to 'Update Score', update_score_path(client) %>
向控制器添加一個動作,該控制器調用模型上的方法,然後添加一條路線以允許請求到達該動作。讓你的鏈接調用該路線。
瀏覽器無法直接與模型對話。這就是控制器的用途。
你介意只是顯示一些基本的代碼,請。 – marcamillion
當然,你至少有一個控制器,至少有一個模型,並且至少有一條路線。這實際上是最簡單的Rails應用程序。查找並按照*任何*教程,你應該有你的答案。 – meagar
您掛接到調用模型方法的控制器方法的途徑。 –