如何在 Rails 4.0 中使用 ajax 更新提要

How to update feed using ajax in Rails 4.0

我正在尝试为 michael heart book 的示例应用创建 ajax 功能。我在 hear book 中创建了一个 micropost 的提要模型控制器。我正在尝试使用 ajax 之类的 post 馈送方法。但我收到了一些错误。我在下面附上我的代码,看看并帮助我。

#feeds_controller.erb
class FeedsController < ApplicationController

    before_action :authenticate_user! ,only: [:create, :destroy]

    def create
        @feed = current_user.feeds.build(feed_params)
        if @feed.save
            flash[:success] = "Micropost created!"
            #redirect_to root_url
            respond_to do |format|

            format.html { redirect_to root_url }
            format.js
        else
          @feed_items = []
          render 'static_pages/home'
        end
    end

    def destroy
    end

    private

         def feed_params
             params.require(:feed).permit(:content)
         end

结束

我的主页正在呈现一些部分代码如下:

#static_pages/home.html.erb

<% if user_signed_in? %>
    <div class="row">
        <aside class="col-md-4">
            <section class="user_info">
                <%= render 'shared/user_info' %>
            </section>
            <section class="stats">
                <%= render 'shared/stats' %>
            </section>
        </aside>
        <div class="col-md-8">
            <h3>Micropost Feed</h3>
            <section class="micropost_form">
                <%= render 'shared/feed_form' %>
            </section>
            <%= render 'shared/feed' %>
        </div>
    </div>
<% else %>

<% end %>

这里有两个代码一切正常,但是当我尝试添加 ajax 时出现错误:

 Rendered shared/_feed.html.erb (3.1ms)
 Rendered feeds/create.js.erb (6.0ms)
 Completed 500 Internal Server Error in 73ms (ActiveRecord: 44.4ms)

 NoMethodError (undefined method `any?' for nil:NilClass):
 app/views/shared/_feed.html.erb:1:in `_app_views_shared__feed_html_erb___516512175__638262078'
              app/views/feeds/create.js.erb:1:in `_app_views_feeds_create_js_erb___967625174__637838198'
              app/controllers/feeds_controller.rb:9:in `create'

为了在创建方法上执行 ajax 我在 feeds 视图下添加了这些文件,文件名为 create.js.erb

$("#feed_add").html("<%= escape_javascript(render partial: "shared/feed") %>");

并且表单文件位于名称为 _feed_form.html.erb

的共享视图文件下
<%= form_for(@feed,:remote  => true) do |f|  %>

    <div id="feed_add">
        <%= f.text_area :content, placeholder: "Compose new            feed..." %>
    </div>
    <%= f.submit "Post", class: "btn btn-primary" %>
<% end %>


#_feed.html.erb

<% if @feed_items.any? %>
    <ol class="microposts">
    <%= render @feed_items %>
    </ol>
    <%= will_paginate @feed_items %>
<% end %>

所以请告诉我如何在这段代码中添加提要而不刷新如何使用部分显示提要。

在这里你只需要渲染一个东西,它是 micheal heart book 中的那个你只需在你的创建 ajax 文件中添加这行代码,这里是代码:

 $(".microposts").prepend('<%= j render  @feed %>');

在这里你可以得到你想要的结果。