Rails render_to给出406不可接受的错误

时间:2013-12-02 21:00:11

标签: javascript jquery ruby-on-rails twitter

所以,我一直在努力纠正我隐藏推文的选择。它工作过一次,但由于我当时没有保存它,我失去了我的方法。

我的功能很简单,你点击隐藏它隐藏了一条推文。这是我在控制器中的内容;

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发生。

2 个答案:

答案 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中或手动安装。感谢所有人帮忙解决这个问题。