0

我是 Rails 新手,仍然通过 railstutorial 学习绳索,但本书通过表单提交 (http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html) 对数据库进行了所有更改。但是如果没有这个,我将如何提交(更新数据库),假设我想添加一些在页面上计算的分数,(例如通过 js 计数器 - 为简单起见,我们只说它是一个常数 10)和我的数据库由一个名为 score 的列组成。然后按下提交按钮后,我将如何更新数据库?

谢谢

4

2 回答 2

0

两种简单的方法:

  • 使用表格
  • 使用带有链接的 URL 参数

Rails 端的处理(GET v. POST 除外)是相同的——它只是一个参数。

但是,如果您使用 JavaScript,则不一定有理由使用表单,因为您只需更新表单输入元素并正常提交即可。

于 2012-06-06T00:22:14.140 回答
0

实际上,这很简单。

  1. 常量 10 是从视图提交的。提交需要指向将处理此请求的控制器操作。所以提交按钮应该使用:controller, :action,:id参数构建 url。在一个表单中,这是在form_for声明中处理的。您将在button_tag声明中处理。

  2. 应该配置路由,以便此消息可以到达控制器/操作。

  3. 常量 10 在 params 散列中传输。如果该字段是 my_counter,则查找params[:my_counter]. 如果表单是针对模型的,比如推文,那么它可能是params[:tweet][:my_counter].

  4. 在控制器操作中,可能是更新,您将首先获取要更改的记录,例如@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
    

祝你好运。

于 2012-06-06T00:29:54.283 回答