在我的index.js.erb中,我有:
alert('asdasd');
在我的控制器中我有:
def index
@konkurrencer = Konkurrencer.find(:all).paginate(:page => params[:page], :per_page => 2)
respond_to do |format|
format.html
format.js{
render :text => "alert('hello')"
}
end
end
我已经包含了jquery和jquery_ujs。为什么我看不到任何警告信息?
答案 0 :(得分:3)
如果您尝试通过浏览器访问索引方法,它将无法工作,因为它不是ajax请求。 如果您想尝试学习AJAX,请创建一个指向另一个具有remote = true属性的方法的链接,这将发送一个AJAX请求。 以下是控制器的外观:
def index
end
def show
end
观点:
index.html.erb
<%= link_to "Click here" , "/controller/show" , remote: true %>
show.js.erb
alert(“Hello,AJAX!”);
然后开始玩更复杂的东西。
答案 1 :(得分:1)
如果希望视图呈现index.js.erb文件,则不希望包含render :text => "alert('hello')"
。 Rails一次只能渲染一个东西,所以它的任何一个或者。
另外,我必须看到正在触及索引操作的AJAX请求,以解决为什么它似乎不起作用。
如果您在浏览器中访问index.js,并且如上所述删除了渲染代码,则应该会看到警告框。
乔
答案 2 :(得分:0)
如果你想从控制器渲染JS,你需要用标签包围它,否则浏览器会把它渲染成一个字符串。
render :text => "<script>alert('hello')</script>"
但一般来说,不建议使用js模板进行此类渲染。