我是rails的新手,仍然通过railstutorial学习绳索,但本书通过表单提交对数据库进行了所有更改(http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html) 。但是,如果没有这个,我将如何提交(更新数据库),让我说我想添加一些在页面上计算的分数,(例如通过js计数器 - 为了简单起见,我只想说它是一个常数10)和我的数据库由一个名为score的列组成。然后在按下提交按钮后,我将如何更新数据库?
谢谢
答案 0 :(得分:0)
两种琐碎的方式:
Rails端的处理(除了GET v.POST)是相同的 - 它只是一个参数。
如果您使用的是JavaScript,则不一定有理由不使用表单,因为您只需更新表单输入元素并正常提交。
答案 1 :(得分:0)
实际上很简单。
从视图中提交常量10。提交需要指向将处理此请求的控制器操作。因此,提交按钮应使用:controller
,:action
,:id
参数构建网址。在表单中,这是在form_for
声明中处理的。您将在button_tag
声明中处理。
应配置路由,以便此消息可以到达控制器/操作。
常量10以params散列传输。如果该字段是my_counter,则查找params[:my_counter]
。如果表单是针对模型的,比如推文,那么它可能位于params[:tweet][:my_counter]
。
在控制器操作中,可能更新,您将首先获取记录以使用@score = Score.find(:params[:id])
之类的内容进行更改。此params[:id]
也来自提交视图。在这里更改计数器,然后保存。
def update
@score = Score.find(:params[:id])
@score.counter = params[:my_counter]
@score.save
redirect_to :action => :index # or wherever
end