2014-01-18 2 views
0

в моем приложении я хочу показать пользователю несколько сообщений, но сообщения имеют город, что мне нужно делать, чтобы показывать сообщения из выбранного города, выбрать какой-либо город и отображать все сообщения выбранного город? файл сообщений post.rbКак пользовательская коллекция выбрать в поле зрения

class Post < ActiveRecord::Base 

    NORMAL = 1 
    ACTIVE = 2 
    COMPLETED = 3 

    STATUSES = { 
    NORMAL => 'unpublished', 
    ACTIVE => 'published', 
    COMPLETED => 'deleted' 
    } 

    def status_name 
    STATUSES[status] 
    end 

    belongs_to :user 
    belongs_to :category 
    belongs_to :city 


    default_scope -> { order('created_at DESC') } 

end 

файл Posts_controller.rb

class PostsController < ApplicationController 
    def index 
     @category = Category.find(params[:category_id]) 
    @feed_items = @category.posts.where(status: params[:status], city_id: params[:city_id]).paginate(page: params[:page]) 
    end 
end 

файл/index.html.erb

<% provide(:title, 'all posts') %> 

<div class="container"> 
<div class="row post_feed"> 
    <h1><%= @category.name %></h1> 
    <div class="col-md-3 col-lg-3" style="padding:0;"> 
     <ul class="list-group"> 
    <li class="list-group-item"><%= link_to 'all categories', all_post_path %> </li> 
<% Category.all.each do |category| %> 
<li class="list-group-item"><%= link_to category.name, category_posts_path(category) %> 
</li> 
<% end %> 
</ul> 
</div> 
<div class="col-lg-8"> 
       <div class="all_post_feed"> 
       <ul> 
        <div class= "city_select"> 
        <%= collection_select(:post, :city_ids, City.all, :id, :name) %> 
        </div> 
<%= render 'categories/feed' %> 
</ul> 
       </div> 
      </div> 
    </div> 
</div> 

файл категории/_feed.html.erb

<% if @feed_items.any? %> 

    <%= render partial: 'categories/feed_item', collection: @feed_items %> 

    <%= will_paginate @feed_items %> 
    <% else %> 
<% end %> 

file categories/_feed_item.html.erb 

<li> 
    <div class="row post_name" > 
     <div class="col-md-8 "> 
      <h3> 
<%= link_to (truncate feed_item.name,:length => 35), feed_item %> 
</h3> 
     </div> 
     <div class="col-md-4 preview-small"> 
      <div class="feed_price pull-right"> 
<% if feed_item.price.to_f == 0 %> 
       price 
       <% else %> 
       <%= number_to_currency feed_item.price %> 
      <% end %> 
      </div> 
     </div> 
    </div> 
    <div class="row post_user"> 
     <div class="col-md-5"> 
      <div class="row"> 
       <div class="col-md-2 user_avatar"> 
      <%= avatar_for feed_item.user, :size => "50x50" %> 
      </div> 
      <div class="col-md-5"> 
<%= link_to feed_item.user.name, (feed_item.user) %><br> 
<% if feed_item.user.reviews.count.to_f == 0 %> 

         <% else %> 
        <%= (feed_item.user.reviews.count) %> 
        <% end %> 
        </div> 
      </div> 
     </div> 
     <div class="col-md-7 adress"> 
      <span class="pull-right"> 
       <%= feed_item.status_name %> 
        <%= l feed_item.date, format: :long %> г.</span><br><span class="pull-right"> 
        <%= (truncate feed_item.adress1,:length => 90) %></span><br> 
    <span class="pull-right">published <%= time_ago_in_words(feed_item.created_at) %> назад. 

    </span> 

     </div> 
    </div> 
</li> 

wh ан пользователь выберите город рельсы показать ему все сообщения от выбранного города

<%= collection_select(:post, :city_ids, City.all, :id, :name) %> 
+0

, что ваш текущий результат? У вас есть конкретная проблема? Непонятно, что вы просите. – Beartech

+0

Спасибо, теперь все работает, но рельсы показывают все сообщения, из всех городов, я хочу показывать для сообщений пользователей из выбранного города, выбрать город и рельсы, показать ему сообщения из выбранного города) – user3089327

+0

Итак, вы хотите, чтобы город выбирал вниз заставить страницу показывать только сообщения из этого города? Вероятно, вам нужен какой-то вызов 'submit' или AJAX, чтобы показать фид только постов для выбранного города. Сейчас похоже, что вы показываете страницу с выпадающим меню и фидом, но не можете отправить город или javascript для обновления 'div' для фидов. – Beartech

ответ

0

Я использую это

<%= form_for :posts, url: category_posts_path, :html => { :method => 'GET' } do |f| %> 
     <%= select_tag :city_id, options_from_collection_for_select(City.all, :id, :name, params[:city_id]), include_blank: true %> 
      <% end %> 

    <script> 
    $(document).ready(function(){ 
     $('#city_id').change(function(){ 
     $('form').submit(); 
     }); 
     $('#status').change(function(){ 
     $('form').submit(); 
     }); 
    }); 
    </script> 
Смежные вопросы