更改Html.erb中Ruby变量的值

更改Html.erb中Ruby变量的值,html,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Html,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,我的控制器中有以下代码: class TestController < ApplicationController @@a = 1 def index @temp = connection.execute("select test_id from mastertest limit #{@@a}, 5;") end 我的ViewHtml.erb文件中有以下代码: <button type="submit" value="Next" form="submit_form"&g

我的控制器中有以下代码:

class TestController < ApplicationController

@@a = 1

def index
    @temp = connection.execute("select test_id from mastertest limit #{@@a}, 5;")
end
我的ViewHtml.erb文件中有以下代码:

<button type="submit" value="Next" form="submit_form">NEXT</button>
<form id="submit_form">
<% @@a = @@a + 1 %>
    <table>
      <% @temp.each do |row| %>
        <tr><td><%= row[0] %></td></tr>
      <% end %>
    </table>
</form>

因此,基本上我是在单击“下一步”按钮时尝试更改类变量@a的值。但它不会更改@aa的值。有人能帮我怎么做吗。

如果您想在表单提交中更改Rails变量,您应该在处理表单的操作中使用相应的代码

正如您所写的,我相信在呈现包含表单的模板时会设置变量


我还隐约记得Rails应用程序中的类变量有一些特殊的考虑。你应该调查一下,确保你使用的技术不会导致任何意外结果。

好的,我设法解决了这个问题:

Ruby有一个称为全局变量的东西,可以这样声明:

$a = 1

使用$a everywhere也会在控制器和视图中保留其值

您尝试过使用helper方法吗

module ApplicationHelper
  @@a = 1
  def increment_a
     @@a = @@a + 1
  end
end
在你看来,只要打电话

<% increment_a %>
并不是说@@变量是一个类变量,并且它在该类的所有实例之间共享。因此,在ApplicationHelper类中的某个位置定义该类,然后它将被共享,并可以在控制器和视图中访问


在所有情况下,我都强烈反对以这种方式使用类变量,并建议您找到另一种方式在视图/控制器之间共享数据/变量。可能使用另一个支持类或在数据库中存储值

全局变量是有害的,在任何语言中都应该避免