2015-02-02 5 views
-1

Я новичок в рельсах, поэтому любая помощь или совет будет очень оценена. Я пытаюсь вызвать созданный вспомогательный метод под названием «trackable_thing» в моих взглядах файла, но я получаю сообщение об ошибке:Использование созданного метода Помощника в Представлениях - rails4

wrong number of arguments (0 for 1)

[деятельность/index.html.erb]: Я первоначально имел в моих взглядах файл:

<h1>Activities</h1> 

<% @activities.each do |activity| %> 
    <% trackable_thing = activity.trackable %> 
    <% if trackable_thing.respond_to? :name %> 
    <% name = trackable_thing.name %> 
    <% elsif trackable_thing.respond_to? :content %> 
    <% name = trackable_thing.content %> 
    <% end %> </br> 
    <%= link_to activity.owner.firstname, activity.owner if activity.owner %> created the event "<%= name %>"</br> 
<% end %> 

[activities_helper.rb]: Но я хотел бы преобразовать ниже логику кода в представлениях на вспомогательный метод и поместить его в файл activities_helper.rb - так я написал ниже вспомогательный метод

activities/index.html.erb (code changed to a helper method as below) 
<% trackable_thing = activity.trackable %> 
<% if trackable_thing.respond_to? :name %> 
    <% name = trackable_thing.name %> 
<% elsif trackable_thing.respond_to? :content %> 
    <% name = trackable_thing.content %> 
<% end %> 

activities_helper.rb 
module ActivitiesHelper 
    #identifies if the trackable_thing is an event or comment 
    def trackable_thing 
    trackable_thing = activity.trackable 
    if trackable_thing.respond_to? :name 
     name = trackable_thing.name 
    elsif trackable_thing.respond_to? :content 
     name = trackable_thing.content 
    end 
    end 

[activities/index.html.erb]: Я пытаюсь вызвать метод helper в представлениях, но я не уверен, как это сделать. Я назвал его, как показано ниже:

<h1>Activities</h1> 
<% @activities.each do |activity| %> 
    <% trackable_thing %> 
    <%= link_to activity.owner.firstname, activity.owner if activity.owner %> created the event "<%= name %>"</br> 
<% end %> 

error message states: wrong number of arguments (0 for 1) 

Я также попытался назвать его, как показано ниже, но я получаю сообщение об ошибке:

<h1>Activities</h1> 
<% @activities.each do |activity| %> 
    <% trackable_thing (link_to activity.owner.firstname, activity.owner if activity.owner %> created the event "<%= name %>")</br> 
<% end %> 

error message states: syntax error 

Любой совет или помощь будет высоко ценится.

+1

Вы должны передать 'активность' методу. 'trackable_thing activity' – ptd

ответ

1

Да, что сказал ptd, trackable_thing не знает, что такое деятельность. Внесите этот метод в параметр, назовите его так, как вы хотите, если вы его вызываете в процессе.

Смежные вопросы