레일즈의 pluralize
메서드는 내가 원하는 (영어가 아닌) 단어처럼 작동하지 않아서 내 솔루션을 시험해 보았습니다. 나는 ApplicationController
이 방법으로 간단한 시작 :정수 대신 전체 객체를 반환하는 레일
def inflect(number, word)
if number.to_i > 1
word = word + "s"
end
return "#{number} #{word}"
end
그리고 내보기에 등을 전화 :
<% @articles.each do |article| %>
<%= inflect(article.word_count, "word") %>
<%= inflect(article.paragraph_count, "paragraph") %>
...
<% end %>
하지만이 날 잡았어 : 나는 그것이 이상한 발견
undefined method `inflect' for #<#<Class:0x3ea79f8>:0x3b07498>
정수라고 생각했을 때 본격적인 객체를 참조 했으므로 콘솔에서 테스트했습니다.
article = Article.first
=> (object hash)
article.word_count
=> 10
article.word_count.is_a?(Integer)
=> true
그래서 나는 words = article.word_count.to_i
을 던졌지 만 TypeError를 던지지는 못했지만 실제로 아무 것도하지 않고 `inflect(article.word_count, "word")
줄과 관련하여 동일한 오류 : undefined method ``inflect' for #<#<Class:0x3ea79f8>:0x3b07498>
을 반환합니다. 그것은 나에게 같은 오류를주고 유지
가 그럼 난 아마 inflect
이미 레일 방법이라고 생각하고 충돌을 명명의 일종이었다,하지만 난에 메서드의 이름을 변경 중요하지 않습니다 undefined method ``whatever' for #<#<Class:0x3ea79f8>:0x3b07498>
I 그런 다음 콘솔에서 테스트하여 정상적으로 작동합니다. 무슨 일이야? 보기 인스턴스가 만들어 질 경우 당신의 도우미에서 모든 코드의 의견
뷰가 자신의 실체에 혼합 기본적으로
이 활용의 ApplicationHelper의 방법, 그것을했다 house9 @하지와 ApplicationController – house9
, 덕분에 넣고하지 컨트롤러의 헬퍼 클래스에서 뷰 헬퍼 메소드를 정의하는 것입니다! ApplicationController가 아닌, 왜 내가 거기에 넣어야하는지, 왜 확장 할 수 있습니까? –
... 대답과 함께 몇 가지 추가 정보를 추가했습니다 – house9