Controller - problem z metodą

Witam,

mam pytani związane z aplikacją którą napisałem przy wykorzystaniu API twittera o co chodzi mam w kontrolerze coś takiego

    @posts = Post.all
    @whu = twitter.search("to: #WHU", result_type: "recent").take(50).collect do |tweet|
      "#{tweet.user.screen_name}:" "#{tweet.text}"
    end
  end````

a w widoku pętle

`
<div class="row">
<% @whu.each do |whu|%>    
        <div class="col s6 m6">
          <div class="card blue-grey darken-1">
            <div class="card-content white-text">
              <span class="card-title"> Author </span>
              <!-- body -->
              <p><%= whu %></p>
            </div>
            <div class="card-action">
              <!-- link to tweet -->
              <a href="#">This is a link</a>
            </div>
          </div>
        </div>   
<% end %>
</div>`

i teraz pytanie jak to rozdzielić to znaczy chciałbym na np. na whu zawołać metodę np. name która by wyświetlała autora wpisu i metodę text która by wyświetlała tweet 

czyli coś takiego

`<% @whu.each do |whu|%> 
    <p><%= whu.name  %></p>
    <p><%= whu.text  %></p>
<% end %>`

domyślam się że jakoś trzeba przerobić kontroler -  z góry wielkie dzięki za pomoc!

Możesz je np. zamknąć w Hash’u:

def index
  @posts = Post.all
  @whu = twitter.search("to: #WHU", result_type: "recent").take(50).collect do |tweet|
    {name: tweet.user.screen_name, text: tweet.text}
  end
end

I wtedy możesz zrobić loop w ten sposób:

<% @whu.each do |w|%> 
   <p><%= w[:name] %></p>
   <p><%= w[:text] %></p>
<% end %>

Cześć,

Ewentualnie możesz zdefiniować zaraz przed pętlą strukturę z dwoma polami dla tweeta:

Tweet = Struct.new(:name, :text)

Później używasz jej w prosty sposób:

def index
  @posts = Post.all
  @whu = twitter.search("to: #WHU", result_type: "recent").take(50).collect do |tweet|
    Tweet.new(tweet.user.screen_name, tweet.text)
  end
end

Mając taką kolekcję struktur możesz iterować po niej w widoku tak jak chciałeś:

<% @whu.each do |whu|%> 
  <p><%= whu.name %></p>
  <p><%= whu.text %></p>
<% end %>

Więcej informacji na ten temat znajdziesz tutaj.