Ruby on rails 关于辅助方法?

Ruby on rails 关于辅助方法?,ruby-on-rails,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", "/e

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

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


助手方法应该放在“app/helpers”的助手文件中,而不是放在模型文件中

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

更新

函数本身还有许多其他问题:

  • 函数中似乎有语法错误,if的两个分支上都有额外的
    ]
  • if的两个分支是相同的;为什么要有一个if呢
  • 你的函数没有返回任何东西;您需要
    return
    关键字
  • 您的函数接受一个参数(
    register
    ),但您没有传入一个参数
  • 通过使用
    []
尝试使以下各项正常工作,然后将分支逻辑添加回:

<% if xyx!= nil? %>
<td><%= select_tag "options", options_for_select([admin_option_for_registrar])
<% end %> 
注册器(注册器)的def管理选项 [ [“Show”、“/registrators/”+registrator.id.to_], [“编辑”、“/Edit\u registrators/”+registrator.id.to\u s], [“Dashboard”、“/homes/”+registrator.registration\u application.id.to\u s] ] 结束 #将注册器对象传递到函数中
我转到了帮助文件,但现在它不再显示下拉列表,而是在下拉列表中显示“option_for_Registrator”,而不再显示编辑、显示和仪表板等选项
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))