2009-02-09 45 views
0

比方说,在控制器中,我得到的对象从数据库中数组是这样的:在控制器中修改/格式化数据库数据的最佳方法?

@statuses = TwitterStatus.find(:all, :order => "tweet_id DESC", :include => :twitter_user) 

而且我已经在视图下面的循环:

<% unless @statuses.nil? -%> 
<ol> 
    <% for status in @statuses %> 
    <li><%= h(status.text -%>/li> 
    <% end -%> 
</ol> 
<% end -%> 

我有更多的数据在我想放在视图中的模型类(用户信息,status_id等)中。

问题是这个日期的大部分都需要改变。我需要以某种方式格式化日期。我想将“target =”_ blank“'插入到”文本“字段中的任何网址中。

我的第一个,虽然将有这样的事情在控制器:

for status in @statuses 
    status.date = status.date.formatDate 
    status.url = status.date.insertTarget 
    status.user = status.user.doUserstuff 

    #Adding new attribute 
    status.username = status.user.lookupUserName 

end 

这只是感觉有点跛我。但是,我想不出更好的。

回答

3

我想同意亚兰。我的视图中充斥着格式化代码,直到我开始添加模型方法来清理它们。在我的最后一个应用程序中,它是名称和时间(雇员调度应用程序)。

class Employee 

def full_name 
    self.first_name + " " + self.last_name 
end 

end 

时间总是很痛苦,时间无处不在我的观点(对应用程序至关重要)。所以,无论我想要显示的开始时间,而不是调用我已经存储在数据库中的属性,我调用自定义方法

class Schedule 

def formatted_start_time 
    self.start_time.strftime('%I:%M%p') 
end 

end 

而且作为最后一点,如果你继续到处格式化时间以同样的方式你视图,您可以延长Time课程并使您的通话更加简洁。在我的初始化文件夹中我加,我加入这个小行

Time::DATE_FORMATS.update(:shift => '%I:%M%p') 

现在我要做的就是就是所说的“” conversions.rb”文件:

time_object.to_s(:shift) 

随时随地回我经常使用的格式化字符串在应用程序中。你可以有一个你最喜欢的格式清单,以清理你的观点,并使其更容易理解。

2

您可能想要将一些实例方法添加到TwitterStatus模型中。 例如:

def formatted_date 
    self.date.formatDate 
end 
0

格式化的责任真的属于这个观点。

“Rails方式”将添加一个辅助方法来进行格式化。

有一个帮手模块与每个控制器和一个全局ApplicationHelper相关联。

例如,如果您的控制器是StatusController

module StatusHelper 

    def status_text(status) 
    # do all your formatting and HTML escaping here 
    ... 
    end 

end 

,并在视图

<% unless @statuses.nil? -%> 
    <ol> 
    <% for status in @statuses %> 
     <li><%= status_text(status) -%></li> 
    <% end -%> 
    </ol> 
<% end -%> 
相关问题