Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails Ajax Jquery_Javascript_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Javascript Rails Ajax Jquery

Javascript Rails Ajax Jquery,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,我正在使用rails动态编辑一篇文章。在每一条上都可以添加段落。我想在railscast的136 jQueryAjax修订教程之后,将Ajax与Jquery结合使用。我为表单和新的.js.erb响应创建了模板,但我一直得到相同的错误: ParagraphsController#new缺少此请求格式和变体的模板。request.formats:[“text/html”]request.variant:[] 这是从view/article/show请求新表单的链接 <%= link_to 'N

我正在使用rails动态编辑一篇文章。在每一条上都可以添加段落。我想在railscast的136 jQueryAjax修订教程之后,将Ajax与Jquery结合使用。我为表单和新的.js.erb响应创建了模板,但我一直得到相同的错误:

ParagraphsController#new缺少此请求格式和变体的模板。request.formats:[“text/html”]request.variant:[]

这是从view/article/show请求新表单的链接

<%= link_to 'New Paragraph', new_article_paragraph_path(@article), remote: true, class: 'uk-button uk-button-primary' %>
查看/段落/new.js.erb

$('div#article-control-panel').hide("fast", function () {
    $('div#article-control-panel').after('<%= j render 'form' %>')
})
$('div#article control panel')。隐藏(“fast”,函数(){
$('div#article control panel')。在('')之后
})
控制器/控制器

class ParagraphsController < ApplicationController
  def new
    @paragraph = Paragraph.new
  end

  def create
    @paragraph = Paragraph.new(paragraph_params)
    @article = Article.find(params[:article_id])

    if @article.user == current_user
      @paragraph.article = @article
      @paragraph.save
    end

    respond_to do |format|
      format.html { redirect_to @article }
      format.js
    end
  end

  def paragraph_params
    params.require(:paragraph).permit(:title, :text, :position)
  end
end
类段落控制器
我想不出是什么问题。错误发生在我按下链接按钮后的文章页面中

编辑
奇怪的是,如果我试图更改orm的url,比如文章路径,它会工作…

您的控制器缺少一个
响应
。您的新函数应如下所示:

def new
  @paragraph = Paragraph.new
  respond_to { |format| format.js }
end
这个
respond\u to
允许rails调用相关的
.js.erb
文件,在本例中是您的
new.js.erb
文件

请记住,当您想要执行ajax调用时,需要以下几个元素:

  • 在控制器操作中,
    响应{| format | format.js}

  • 您的
    js.erb
    文件需要与控制器操作同名(
    foo.js.erb

  • 要通过
    js.erb
    文件渲染的部分,通常与js文件同名。(
    \u foo.js.erb

  • 如果是链接,则需要
    remote:true
    。如果它是一个表单,并且您正在使用rails 5,那么您可以将
    form\u与
    一起使用,或者也可以简单地包括
    remote:true


您可以发布控制器的代码吗?当然可以,sry I forgetActionController::段落中的未知信息控制器#第4行的新响应|格式|。他似乎不喜欢js模板,我写了一篇文章,不明白为什么,remote:True这可能是一个路由错误。你能运行
rails-routes | grep-paration
来确认你进入链接的路径是否正确吗?现在我检查了,sintax是错误的。我把它修好了。。。谢谢你的帮助和帮助advices@Jarlio很乐意帮忙:)
class ParagraphsController < ApplicationController
  def new
    @paragraph = Paragraph.new
  end

  def create
    @paragraph = Paragraph.new(paragraph_params)
    @article = Article.find(params[:article_id])

    if @article.user == current_user
      @paragraph.article = @article
      @paragraph.save
    end

    respond_to do |format|
      format.html { redirect_to @article }
      format.js
    end
  end

  def paragraph_params
    params.require(:paragraph).permit(:title, :text, :position)
  end
end
def new
  @paragraph = Paragraph.new
  respond_to { |format| format.js }
end