我在使用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服务器端无法接受错误.
我试图在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:如果我删除超级,覆盖的工作就好了,但是原来的方法没有被调用,我不希望这样.