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