【发布时间】:2014-01-18 18:38:11
【问题描述】:
在我的应用程序中,我想向用户显示一些帖子,但是帖子有城市,我需要做什么来显示来自所选城市的帖子,用户选择某个城市并在视图中显示所选城市的所有帖子? 文件 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>
当用户选择城市轨道时,向他显示所选城市的所有帖子
<%= collection_select(:post, :city_ids, City.all, :id, :name) %>
【问题讨论】:
-
你目前的结果是什么?你有具体的问题吗?不清楚你在问什么。
-
谢谢,现在一切正常,但是 rails 显示所有城市的所有帖子,我想显示来自所选城市的用户帖子,用户选择城市和 rails 显示他来自所选城市的帖子)
-
所以您希望城市选择下拉菜单使页面仅显示来自该城市的帖子?您可能需要某种
submit或AJAX 调用来使Feed 只显示所选城市的帖子。现在看起来你呈现一个带有下拉菜单和提要的页面,但无法提交城市,或者 javascript 来更新提要的div。 -
你能举个提交的例子吗?请
-
对不起,我不是那么好,我可以快速写一个。我知道你想做什么,但我至少要花几个小时来写一个例子,即使是你所有的代码。您可以在此处查看我如何编写一个执行 Ajax 调用的下拉菜单的示例:stackoverflow.com/questions/18503168/… 只需向下滚动到接受的答案即可查看工作流程。我只是现在没有足够的空闲时间来提交。
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4