【发布时间】:2019-06-24 09:38:08
【问题描述】:
我正在研究 Ruby on Rails,我想为我的视图创建一个辅助方法。我必须将一个活动记录对象、一个 symbol 变量和一个标题传递给该方法。
此方法的目的是获取数据,创建一些 和 标记以将标题和对象属性放在数据库中(通过使用符号变量访问)并获得一个漂亮的 HTML 位代码放在我的视图上。 一切正常,除了当我需要显示一些对象的属性(如日期时间属性或布尔值)时,我需要调用特定对象的方法。例如,获取用户的状态 如果他已经确认了他的电子邮件,返回字符串“Confirmed”,如果没有,返回字符串“Unconfirmed”。 在上面的例子中,不会有问题,因为 :city 是来自用户的属性。所以辅助方法会尝试调用 但是,如果我想获取我的用户的状态,我需要调用我的用户的 get_status 方法: 这将返回 nil,因为 :get_status 不是我的用户模型数据库上的属性:它是我的 app/models/user.rb 上定义的方法 如何向我的用户模型添加一些代码,以便我可以将帮助程序与数据库或模型方法的属性一起使用?
module UsersHelper
def user_show_field(user, column, title=nil)
title ||= column.titleize
return "<p><strong>#{title}</strong>: #{user[column]}</p>".html_safe
end
end
<%= user_show_field(@user, :city, "City") %>
@user[:city]
@user[:get_status]
class User < ApplicationRecord
def get_status
return registered ? "Email confirmed" : "Unconfirmed user"
end
end
【问题讨论】:
标签: ruby-on-rails ruby oop methods accessor