RoR if .. else语句

时间:2012-06-11 07:43:22

标签: ruby-on-rails view if-statement switch-statement

我试图将一个值返回到我的观点,虽然没有取得多大成功

错误

的未定义局部变量或方法`schedule'

模型

    def win_lose_tie
    if schedule.for.to_i == schedule.against.to_i then
      :tie
    elsif schedule.for.to_i > schedule.against.to_i ? :win : :lose
    end
  end

辅助

    def win_lose_tie_display(value)
    case value
      when :win
        "W"
      when :lose
        "L"
      when :tie
        "T"
      else
        "unknown win/lose/tie value"
    end
  end

视图

<%= win_lose_tie_display(schedule.win_lose_tie) %>

所有这些都返回以下错误

计划表中的NameError #index

显示/Users/**/Sites/rails_projects/**/app/views/schedules/index.html.erb第46行提出:

43:           <% @schedules.each do |schedule| %>
44:               <tr>
45:                 <td><%= schedule.event %></td>
46:                 <td><strong><%= win_lose_tie_display(schedule.win_lose_tie) %></strong> <%=  schedule.for %> &mdash; <%= schedule.against %></td>
47:                 <td><%= schedule.opponent %></td>
48:                 <td><%= schedule.date.to_formatted_s(:event_date) %>
49:                 </td>

任何帮助都会很棒

提前致谢

1 个答案:

答案 0 :(得分:0)

win_lose_tie方法中,与schedule交换self

这是因为win_lose_tie是计划对象的实例方法。您已经在计划对象的上下文中,因此无需编写schedule.。实际上,这将引用不存在的*your_schedule_object*.schedule

作为网站备注:由于您只阅读了值,因此您甚至可以完全省略self。但是,如果您指定值,则需要self