-3

构建一个 Ruby on Rails 应用程序,要求用户选择 1-3 个价格级别并为每个所选级别输入一个价格。更高的水平总是有更高的价格与之相关联。level_avail选项是 1, 2, 3,对应的价格变量是price, price2, 和price3

我正在尝试编写一个if语句来首先检查levels_avail用户选择的选项并将一个新变量设置为相应的价格。下面的代码似乎工作正常,但是当我@max_saving在我的视图中调用时,没有返回任何内容。任何帮助表示赞赏。

型号代码

def max_saving (levels_avail)
  if levels_avail == 1
    @max_saving = price
  elsif
    levels_avail == 2
    @max_saving = price2
  else
    @max_saving = price3
  end
end

查看代码

<div id="offer-title"> Up To <%= @max_saving %> Off! </div>
4

1 回答 1

2

<%= @max_saving %>不调用max_saving函数,它只是读取函数@max_saving设置的变量max_saving。您需要max_saving在运行的操作下实际调用控制器中的某个位置。像这样:

def index # or whatever action
  # a bunch of existing code
  levels_available = 2 # get this data from wherever it comes from
  max_saving(levels_available)
  # more existing code
end

或者您可以更改max_saving为只接受参数并且不读取实例变量的自定义助手。

于 2013-07-22T16:21:05.437 回答