【问题标题】:Want to have a partial update with ajax想要使用 ajax 进行部分更新
【发布时间】:2014-02-25 16:39:34
【问题描述】:

我有一个表格:

<% form_tag({:controller => "/faq", :action => 'search_ajax'}, :update => "help_results", remote: true) do %>

这将进入应该更新 help_results div 的 search_ajax 操作。该动作应该在最后呈现部分,但我肯定有语法问题:

def search_ajax
@categories = HelpCategory.find(:all)

if params[:query].not_blank? && params[:query] != "Search for help about..."
  @query = params[:query]
  @terms = params[:query].split.map {|t| "%#{t.downcase}%" }

  options = {
      :allow_partial_match => true,
      :order => 'fulltext_match_score DESC',
  }
  @results = SearchableText.search_model(HelpItem, @query, options).uniq
  @results = {"Search Results" => @results} if !@results.blank?
  @complicated_query = HelpItem.is_complicated_query?(@query)
  @search_included = true
else
  @results = HelpItem.all.group_by {|item| item.category.name rescue "Misc"}
  @search_included = false
end

render :partial => "results"
respond_to do |format|
  format.js do
    render :partial => 'results'
  end
  format.html do
    render :partial => 'results'
  end
end

结束

部分 respond_to 区域被注释掉了。我收到错误消息:

ActionController::DoubleRenderError in FaqController#search_ajax

我知道如果我将 remote =&gt; true 助手添加到我的表单中,控制器操作需要响应 js。我很确定这是一个语法错误。 respond_to 也出现在我的控制器操作的末尾。

【问题讨论】:

  • 请添加search_ajax操作的全部内容。通常这些双重渲染错误与在同一操作中调用多个 renderredirect_to 方法有关。

标签: ruby-on-rails ajax


【解决方案1】:

删除

render :partial => "results"

在 respond_to 块上方

【讨论】:

  • 当我这样做时,部分是空白的,没有任何显示。当我提交表单时,它看起来不像 ajax 正在工作,因为它是一个新的 http 请求。
  • 您没有将结果传递给它。试试render :partial =&gt; "results", :results =&gt; @results
  • 在初始页面加载时仍然没有显示任何内容,并且 ajax 也无法正常工作
  • 你能发布部分内容吗
猜你喜欢
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 2014-06-28
  • 1970-01-01
  • 2016-02-25
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多