【问题标题】:Rails - adding ajax to partials, 'undefined method `render''Rails - 将ajax添加到部分,'未定义的方法'render''
【发布时间】:2014-10-02 15:31:36
【问题描述】:

我有一个部分表单,在一个 id 为“chapcmets”的 div 中,带有一个提交标签 -

<%= f.submit "Post", remote: true %>

在正确的视图文件夹中,我有 create.js.erb -

$('#chapcomments').html("<%=j render 'shared/chap_comment_complete' %>");

在控制器中我有格式块,其中包括

def create
  @chap_comment = current_user.chap_comments.build(chap_comment_params)

  respond_to do |format|
    if @chap_comment.save
      format.js
      format.html {redirect_to chapter_path(@chap_comment.chapter)}
    else
      format.html { render :new }
      format.json { render json: @chap_comment.errors, status: :unprocessable_entity }
    end
  end
end

...但我没有得到 ajax 行为...

我哪里错了?

【问题讨论】:

  • 您应该将render 'partialname' 部分括在括号中。或者,试试&lt;%=j render 'shared/chap_comment_complete' %&gt;
  • 嗨,谢谢 mccannf。也刚刚阅读了this,因此已将代码移动到正确视图文件夹中的 create.js.erb 中。现在没有得到错误,只是没有得到 ajax 行为。最令人困惑。
  • 您的 Rails 日志显示什么?是渲染 create.js.erb 吗?
  • 不,它似乎正在跳到 format.html。我已经编辑了问题以包含整个控制器操作。顺便说一句,谢谢。
  • 不确定,但我认为remote: true 部分应该在form_for 声明中,而不是提交。

标签: javascript ruby-on-rails ajax


【解决方案1】:

您已经进行了更改,以便 JS 在视图中正确的 js.erb 文件中,但是您需要将 remote: true 部分从提交标记移动到您的 form_for 声明中,否则格式。 html 响应块将被呈现而不是 format.js。

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多