set_score
我的模型上有一个名为 的方法Client
。
在我Clients#index
看来,我想创建一个按钮/链接,上面写着“更新分数”,而这一切只是将必要的参数发送到该方法并运行它。
我怎么做?
我可以使用 Rails 链接助手来做到这一点吗?
编辑1:
对于它的价值,现在该方法由callback
(ie before_save
) 执行。但我想让用户能够手动触发它。
set_score
我的模型上有一个名为 的方法Client
。
在我Clients#index
看来,我想创建一个按钮/链接,上面写着“更新分数”,而这一切只是将必要的参数发送到该方法并运行它。
我怎么做?
我可以使用 Rails 链接助手来做到这一点吗?
编辑1:
对于它的价值,现在该方法由callback
(ie 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) %>