所以,我一直在努力纠正我隐藏推文的选择。它工作过一次,但由于我当时没有保存它,我失去了我的方法。
我的功能很简单,你点击隐藏它隐藏了一条推文。这是我在控制器中的内容;
def hide
@newtweet = Newtweet.find(params[:id]).update_attribute(:stauts, 'new')
respond_to do |format|
format.js {flash[:notice] = "We've archives your tweet for later."}
end
end
这是我为我的链接所获得的内容;
<%= link_to "hide", hide_url(:id => tweetsy.id), :class => "btn btn-warning btn-sm hideit hidden-xs", :remote => true %>
最后,这是我的路线中的链接;
match '/dashboard/hide/:id' => 'dashboards#hide', :as => :hide
我已经将def hide隐藏在我的仪表板控制器中......一旦我添加
它就能正常工作respond_to do |format|
end
甚至......这一切都给了我
Completed 406 Not Acceptable in 8ms (ActiveRecord: 1.8ms)
不知道,我之前是如何工作的,而且我要把头发拉出来。如果我添加format.js ..同样的旧东西。如果我删除
respond_to do |format|
end
一切正常..即使上面留下它,仍然隐藏它,但我得到一个空白屏幕而不是一个漂亮的ajax发生。
答案 0 :(得分:0)
我确信这是一个rails bug,因为即使使用正确的路由,我也会在JSON调用(如文档here)上遇到同样的事情。
如果您尝试使用隐藏的本地URL显式调用链接,最后使用JS扩展名查看是否停止获取406错误。
<%= link_to "hide", "/hide.js?id=" + tweetsy.id.to_s, :class => "btn btn-warning btn-sm hideit hidden-xs", :remote => true %>
我知道这看起来像是一个黑客攻击,但我在几次与JSON有类似问题的情况下几乎没有成功。也许其他人对URL路径上的完全限定的.js或.json有答案会产生影响。或者如何在路线本身中改变它。
答案 1 :(得分:0)
为了最终确定这一点,请确保所有jQuery文件都已正确设置,并且所有jQuery文件都在适当的区域内。就我而言,我需要以下内容才能使所有respond_to
工作。我知道,我知道,对我很傻。
您的Application.js应该有这些。
/= require jquery
//= require jquery_ujs
//= require jquery.ui.touch-punch
//= require_tree .
以及Gem明智的其他一切应该在您的Gemfile中或手动安装。感谢所有人帮忙解决这个问题。