【问题标题】:Rails AJAX PUT method not working and Heroku errorRails AJAX PUT 方法不起作用和 Heroku 错误
【发布时间】:2014-01-23 00:06:46
【问题描述】:

我有一个Article 模型和一个articles 控制器。
index 操作:

def index
 @article=Article.find(id: params[:id])
 respond_to do |format|
  format.html
  format.js
 end
end  

index.html.erb

<a href="" id="find">Find Article</a>
<div id="article">
  <%= render @article %>
</div>  

$('#find').click(function(){
 $.ajax({
   type: "PUT",
   data: {id: id},
   url: "/index"
 });
});

index.js.erb

$('#article').update("<%=escape_javascript(render(@article))%>"); 

_article.html.erb

<p><%= @article.name %></p>  

routes.rb

get '/index', to: "articles#index"
put '/index', to: "articles#index"  

但是部分中没有显示任何内容。 p 标签为空。日志中没有错误。 假设没有记录与查询匹配,那么它应该给出nil 错误。

另外在 heroku 上,当我转到 index 页面时,它会抛出错误(在本地一切正常)

ActionView::Template::Error(nil:NilClass 的未定义方法“名称”):

那么这里发生了什么? Rails 中的 ajax 是如何工作的?我可以从上述错误中得到的是,当调用index 操作时(当我访问它时)它会尝试检测@article 变量,即nil,同时它呈现_article.html.erb部分太。肯定@article第一次为零。只有在我单击链接并发出ajax请求后才会进行查询。rails如何知道这是一个ajax请求?

我做错了什么?

感谢您的帮助。

更新

现在,尝试了一些东西,即使我没有在 index.js.erb 中添加任何内容,@articles 变量也会在控制台中正确呈现。

【问题讨论】:

  • 您的点击功能没有正常关闭。
  • @hawk 这是一个错字。 :)

标签: ruby-on-rails ajax heroku


【解决方案1】:

你可以试试

Article.find(params[:id])

如果没有,检查是否有你传递的 id 的文章对象

【讨论】:

  • 是的。存在具有该 ID 的文章。我只是明确地传递哈希参数来确定我在做什么。 Bet'n 查询在控制台中正确返回,当我在那里查看 html 时,_article.html.erb 模板被正确呈现。它只是没有显示在浏览器页面上。并且在 Heroku 上根本不起作用。
  • @whoIsCraig 尝试 {:article => @article} %> 和
  • 现在我遇到了与 Heroku 相同的错误。 undefined method name' for nil:NilClass`
  • Bet'n 你能告诉我为什么 heroku 会给出这个错误吗?你能回答问题的最后一部分吗? Rails 中的 ajax 是如何工作的?为什么一切都在控制台而不是外部工作?
猜你喜欢
  • 2013-07-13
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多