В каком контроллере я должен разместить элементы, которые сохраняются в приложении? - PullRequest
0 голосов
/ 14 марта 2012

Все, что после @posts должно сохраняться во всем приложении (как на левой боковой панели, которую вы найдете в Facebook).

  def index
    @title = "Posts"
    default_order = "content_changed_at DESC"
    params[:order_by] ||= default_order 
    @posts = current_user.subscribed_posts.paginate(:page => params[:page],
                                                    :per_page => 5,
                                                    :order => params[:order_by])
    @subscribed_tags = current_user.subscribed_tags
    @recent_posts = current_user.posts.limit(5).order("created_at DESC")
    @tags= Tag.limit(20).order("ID asc")
    @user = current_user
  end

вид / макет / _sidebar.html.erb:

    <div class="user-profile">
      <% avatar = image_tag(current_user.avatar.url(:thumb), :class => "authenticated-avatar") %>
      <%= link_to avatar, "/users/#{current_user.id}" %>
      <%= link_to "#{current_user.username}", "/users/#{current_user.id}", :class => "authenticated-username" %>
    </div>

    <%= form_for(@user, :remote => true) do |f| %>
      <div class="field">
        <%= f.label :subscribed_tag_names %><br />  
        <%= f.autocomplete_field :subscribed_tag_names, autocomplete_tag_name_posts_path, :"data-delimiter" => ' ', :class => "autocomplete_field" %>
      </div>
      <div class="actions">
        <%= f.submit :class => "user_subscribed_tag_names_submit" %>
      </div>
    <% end %>

    <div class="user-subscribed_tags">
      <% @subscribed_tags.each do |subscribed_tag| %>
        <%= link_to "#{subscribed_tag.name}(#{subscribed_tag.posts.count})", unsubscribe_tags_path(:unsubscribed_tag_name => subscribed_tag.name) %>
      <% end %>
    </div>

    <div class="user-recent-posts">
      <h4>Recent Posts</h4>
      <ul>
        <% @recent_posts.each do |recent_post| %>
          <li><%= link_to recent_post.title, recent_post %></li>
        <% end %>
      </ul>
    </div>

    <div class="top-tags">
      <% @tags.each do |tag| %>
        <span class="tag-name"><%= tag.name %></span>
        <span class="tag-count"><%= tag.posts.count %></span>
      <% end %>
    </div>
  <% end %>

Где мне разместить код в контроллере, если я хочу, чтобы он сохранялся во всем приложении? (Я хотел бы увидеть пример кода, если это возможно).

1 Ответ

3 голосов
/ 14 марта 2012

Если оно сохраняется в приложении, то есть для всех действий всех контроллеров, вы можете поместить его в before_filter в контроллере приложения.

Добавить before_filter к контроллеру приложения как:

before_filter :find_recent_posts_and_tags

И определить его (как личное):

private
def find_recent_posts_and_tags
  # define your instance variables
end

Подробнее о фильтрах здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...