【问题标题】:Rails create action renders as Javascript but doesn't show up on pageRails 创建动作呈现为 Javascript 但未显示在页面上
【发布时间】:2015-04-28 00:01:03
【问题描述】:

我正在构建一个类别菜单,可以在 Rails 中使用 :remote => true 进行更新,而无需重新加载页面。

我的 new 操作成功呈现为 javascript 并且更改显示在页面上,但是我的 create 操作似乎成功呈现但未显示在页面上。我可以在重新加载页面时看到更改,因此我知道创建操作正在运行。只是 javascript 似乎无法正确呈现页面。但是,如果我查看 Firebug 中 POST 请求的响应,我可以看到预期的更改。

请帮忙。我已经在 StackOverflow 上花费了数小时试图找到解决方案。

我的类别控制器

class CategoriesController < ApplicationController

  def new
    @category = Category.new()
  end

  def create
    @category = Category.new(category_params)

    if @category.save
      redirect_to(:controller => 'apps', :action => 'index')
    else
      render('new')
    end

    @categories = Category.where(:parent_id => nil)
  end

  def update
    @category.update_attributes(category_params)
  end

  private

  def category_params
    params.require(:categories).permit(:name, :parent_id)
  end
end

我的应用控制器

class AppsController < ApplicationController
  def index
    @category = nil

    @categories = Category.where(:parent_id => nil)

    @apps = App.all

    respond_to do |format|
      format.html
      format.json
      format.js
    end
  end

  def new
    @app = App.new()
  end

  def create
    @app = App.new(params[:id])

    if @app.save
      redirect_to(:action => 'index')
    else
      render('new')
    end
  end

  private

    def apps_params
      params.require(:apps).permit(:name, :category, :image)
    end
end

创建表单(部分)

<%= simple_form_for :categories, remote: true,
                    :url => url_for(:action => 'create', :controller => 'categories'),
                    :method => 'post' do |f|   %>
    <%= f.input  :name                      %>
<% end %>

创建.js.erb

$('#categories-list').html("<%= j (render 'catList') %>");
$('#category-form').slideUp(350);

_catList.html.erb

<li class="pure-menu-heading">Categories</li>
<% @categories.each do |cat| %>
    <li class="pure-menu-item"><a href="#" class="pure-menu-link"><span class="email-label-personal"></span><%= cat.name %></a></li>
<% end %>

【问题讨论】:

    标签: javascript ruby-on-rails ajax ruby-on-rails-4


    【解决方案1】:

    解决了!

    我在另一个论坛上找到了一些可以帮助我的人。

    我所要做的就是删除 redirect_to(:controller =&gt; 'apps', :action =&gt; 'index') 在类别控制器中

    【讨论】:

      猜你喜欢
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 2014-12-13
      • 1970-01-01
      相关资源
      最近更新 更多