2013-08-18 4 views
0

Я новичок в рельсах, и я стараюсь понять структуру и где и как должен быть установлен метод. Я сейчас очень смутил себя.Как создать метод рельсов 4

Это прекрасно работает, но проблема не в соблюдении правил MCV.

 <% @showblog.showruns.group(:spec_vote).count.each do |spec,count| %> 
     Spec: <%=" #{spec}"%> Votes: <%=" #{count}" %> <br/> 
     <% end %> 

Мое мнение должно быть <% = @ voted.inspect%> или аналогичный.

со всем остальным материалом в другом месте. В некотором сценарии все, что появляется на экране, это {}, который является нитью или нолем.

Моя последняя попытка:

class Voted < ActiveRecord::Base 
    def voted(spec,count) 
    @showblog = Showblog.find(params[:showblog_id]) 
    @voted = @showblog.showruns.group(:spec_vote).count.each do |spec,count| 
    " Spec:#{spec} Votes: #{count}" 
    end end end 

Это имеет ноль.

Я добавил это в различное место, чтобы попытаться понять, что происходит не так, но даже с «ошибкой метода». Я до сих пор не знаю, где я должен это видеть.
logger.error "-------- (некоторое слово, так что я знаю имя файла) ------- # {@ showblog.inspect}" Мое приложение размещено на heroku.com

class Showblog < ActiveRecord::Base (parent) has_many :showruns, dependent: :destroy end 
class Showrun < ActiveRecord::Base (child) belongs_to :showblog end 

Оба контроллера содержат нормальный CRUD и работают нормально.

+1

Это не совсем ясно, что ваш вопрос. Много раз задавая вопрос таким образом, который другие могут понять, он может помочь вам лучше понять проблему самостоятельно. –

+0

Посмотрите, если это имеет смысл. http://stackoverflow.com/questions/18165948/using-a-method-within-model-calling-it-from-view/18166048#18166048 – scaryguy

+0

Для лучшего понимания методов ознакомьтесь с моим ответом на http: // stackoverflow .com/questions/18225543/how-can-i-call-methods-in-controller-ror – Mattherick

ответ

0

В моделях и контроллерах вам лучше не добавлять логику просмотра в них. Лучший метод - использовать помощники в представлениях.

в ваше приложение/хелперов/application_helper.rb или другие вспомогательные файлы, добавьте

def vote_spec(blog) 
    result = '' 
    blog.showruns.group(:spec_vote).count.each do |spec,count| 
    result << "Spec: #{spec} Votes: #{count} <br/>" 
    # or the other logic you want to add such as using a table or div 
    end 
    result.html_safe 
end 

на ваш взгляд:

<%= vote_spec(@showblog) %> 
+0

точно, чего я пытался достичь. Благодарю. – Angie