2009-02-09 4 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 "를"text "필드의 URL에 삽입하고 싶습니다.

내 첫번째 생각은 컨트롤러에서 이런 일을하는 것입니다 :

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

나는 Aram에 동의하고 싶습니다. My Views는 모델 메소드를 추가하기 전까지는 코드를 포맷팅하는 작업이 번거로워졌습니다. 마지막 앱에서는 Names and Times (직원 스케줄링 응용 프로그램)가있었습니다.

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_object.to_s(:shift) 

어디서나 내 자주 사용하는 형식의 문자열을 반환하는 내 이니셜 폴더에서 나는

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

이제 내가 할 모든이가 전화입니다이 작은 라인을 추가 된 ''conversions.rb '파일을 추가 응용 프로그램에서. 좋아하는 형식의 전체 목록을 사용하여보기를 정리하고 더 쉽게 이해할 수 있습니다.

2

일부 인스턴스 메서드를 TwitterStatus 모델에 추가 할 수 있습니다. 예 :

0

서식에 대한 책임은 실제로보기에 속합니다.

"레일 웨이"는 도우미 방법을 추가하여 서식을 지정하는 것입니다.

각 컨트롤러 및 글로벌 ApplicationHelper와 연결된 도우미 모듈이 있습니다.

예를 들어, 컨트롤러는

module StatusHelper 

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

end 

및 뷰에서 StatusController 경우

<% unless @statuses.nil? -%> 
    <ol> 
    <% for status in @statuses %> 
     <li><%= status_text(status) -%></li> 
    <% end -%> 
    </ol> 
<% end -%> 
관련 문제