【问题标题】:How user collection select in view用户集合如何在视图中选择
【发布时间】: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


【解决方案1】:

我用这个

<%= 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>

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2015-06-12
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    相关资源
    最近更新 更多