【问题标题】:Assigning a variable to an integer converted parameter and using in html.erb file将变量分配给整数转换参数并在 html.erb 文件中使用
【发布时间】:2015-05-13 08:06:42
【问题描述】:

基本上我想使用参数将这些输入字段的值存储为整数

<input type="number" name="happyquant" min="1" max="5" value="1" />
<input type="number" name="skyquant" min="1" max="5" value="1" class="bot"/>

此代码在另一个 html.erb 文件中,因此当我按下提交时,我希望它传输值。很抱歉没有早点澄清这一点。顺便说一句,我运行它的网站是http://ipt-dynaman.c9.io/。 我的控制器

def receipt
render layout: 'cart'
params[:skyquant] = params[:skyquant].to_i
params[:happyquant] = params[:happyquant].to_i
a = params[:skyquant]*50
end

我想在哪里显示它

<div class="receipt-row">
   <% a %>
</div>

老实说,我什至不知道自己在做什么,但我想基本上学习如何在 html.erb 文件中使用类似的变量。具体以这个为例。

【问题讨论】:

  • 使用 @a 实例变量而不是 'a' 并在您的 html 视图中使用 @a。
  • 你错过了'='

标签: html ruby-on-rails applicationcontroller


【解决方案1】:

为了能够在html.erb 文件中使用变量,您必须将变量声明为实例变量,要显示变量中的某些内容,您必须使用&lt;%= ruby_code %&gt; 而不是&lt;% ruby_code %&gt;

def receipt
 render layout: 'cart'
 params[:skyquant] = params[:skyquant].to_i
 params[:happyquant] = params[:happyquant].to_i
 @a = params[:skyquant]*50
 # variable with @ in front of name, are instance variables
end

<div class="receipt-row">
   <%= @a %>
</div>

当您使用&lt;% %&gt; 时,它会评估ruby 代码,但不会显示此代码返回的内容,当您使用&lt;%= %&gt; 时,它将显示代码结果,您的case 值来自@a

【讨论】:

  • 它是实例变量,不是即时变量:)
【解决方案2】:

a 是一个局部变量。它们只存在于其范围内(当前块)

@a 是一个实例变量 - 可用于类中的所有方法。

在 Ruby on Rails 中 - 将控制器中的变量声明为实例变量 (@a) 使它们可用于您的视图。

在此处阅读更多信息:http://strugglingwithruby.blogspot.dk/2010/03/variables.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多