关于辅助方法?

时间:2011-02-28 15:58:12

标签: ruby-on-rails

def admin_options_for_registrar(registrar)
  if registrar.enrollment_application != nil && registrar.enrollment_application.status == "Complete"
    ["Show", "/registrars/"+registrar.id.to_s],["Edit", "/edit_registrars/"+registrar.id.to_s], ["Dashboard", "/homes/"+registrar.enrollment_application.id.to_s], ]
  else
    ["Show", "/registrars/"+registrar.id.to_s],["Edit", "/edit_registrars/"+registrar.id.to_s], ["Dashboard", "/homes/"+registrar.enrollment_application.id.to_s], ] 
  end
end

我在模型文件中写的这个辅助方法 现在我以这种方式在视图文件中调用此方法

<% if xyx!= nil? %>
<td><%= select_tag "options", options_for_select([admin_option_for_registrar])
<% end %> 

这应该给我下载编辑,显示和仪表板,但它给我错误undefined mentod'admin_options_for_registrar'

任何帮助??

1 个答案:

答案 0 :(得分:1)

Helper方法应该放在'app / helpers'中的帮助文件中,而不是放在模型文件中。

正如所写,听起来你已经为你的模型创建了一个实例方法,你试图在没有实例的情况下调用它。

<强>更新

该功能本身存在许多其他问题:

  • 您的函数中似乎有语法错误,if
  • 的两个分支上都有额外]
  • 你的if的两个分支是相同的;为什么要一个if?
  • 你的功能没有归还任何东西;您需要return关键字
  • 你的函数接受一个参数(registrar),但你没有在
  • 中传递一个参数
  • 通过调用[]
  • 将函数的结果包含在addtional数组中

尝试使以下工作正常,然后再添加分支逻辑:

def admin_options_for_registrar(registrar)
    [ 
        ["Show", "/registrars/"+registrar.id.to_s],
        ["Edit", "/edit_registrars/"+registrar.id.to_s],
        ["Dashboard", "/homes/"+registrar.enrollment_application.id.to_s]
    ]
end


# pass the registrar object into your function
<%= select_tag "options", options_for_select(admin_option_for_registrar(registrar))