更改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类中的某个位置定义该类,然后它将被共享,并可以在控制器和视图中访问
在所有情况下,我都强烈反对以这种方式使用类变量,并建议您找到另一种方式在视图/控制器之间共享数据/变量。可能使用另一个支持类或在数据库中存储值 全局变量是有害的,在任何语言中都应该避免