小编Elh*_*lhu的帖子

Rails Ajax:.js.erb呈现为文本,而不是JS

我在使用rails3来渲染Javascript时遇到了麻烦(如果这是相关的,我使用JQuery,它可以正常工作,因为它在应用程序的许多其他部分中使用)而不是html.

我有什么:我认为,我有这个链接:

<%= link_to 'Edit', edit_user_repreneur_path(@user_repreneur, :format => :js), :remote => true %>
Run Code Online (Sandbox Code Playgroud)

首先,我真的不明白为什么我要添加:format =>:js来让控制器使用JS视图,而不是HTML视图.这是控制器的代码:

def edit
    @user_repreneur = UserRepreneur.find_by_id_view(params[:id])
    respond_to do |format|
      format.js
      format.html
    end 
end
Run Code Online (Sandbox Code Playgroud)

在控制器类的开头,我有这一行:

  respond_to :js, :html
Run Code Online (Sandbox Code Playgroud)

我的edit.js.erb文件包含一行警告.但是,在呈现页面时,JS将呈现为文本,因此不会执行.我试图将format.js行更改为

format.js { render :layout => false }
Run Code Online (Sandbox Code Playgroud)

但它没有改变任何东西.我想我错过了什么,但我真的不明白...

非常感谢,欢呼!

PS:我不知道这是否有用,但在我的链接助手中添加:format =>:js位之前,视图总是呈现为HTML,如果我评论了format.html,我有一个406服务器端无法接受错误.

ajax jquery ruby-on-rails

6
推荐指数
1
解决办法
1万
查看次数

从模块方法调用super

我试图在Ruby/Rails中覆盖位于Gem中的方法,我正在努力解决一些问题.

我的目标是在调用Gem中的方法时执行自定义代码,同时还要继续执行原始代码.

我试图将代码抽象为以下脚本:

module Foo
  class << self
    def foobar
      puts "foo"
    end
  end
end

module Foo
  class << self
    def foobar
      puts "bar"
      super
    end
  end
end


Foo.foobar
Run Code Online (Sandbox Code Playgroud)

执行此脚本会给我这个错误:

in `foobar': super: no superclass method `foobar' for Foo:Module (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

我应该如何编写覆盖方法,以便在引发此异常时调用super?

PS:如果我删除超级,覆盖的工作就好了,但是原来的方法没有被调用,我不希望这样.

ruby methods module super ruby-on-rails-3

5
推荐指数
2
解决办法
3756
查看次数

标签 统计

ajax ×1

jquery ×1

methods ×1

module ×1

ruby ×1

ruby-on-rails ×1

ruby-on-rails-3 ×1

super ×1