ruby-on-rails – 如何从rails中的控制器调用javascript函数
发布时间:2020-12-17 04:20:57 所属栏目:百科 来源:网络整理
导读:我试图从Rails 3.2应用程序中的控制器调用 javascript函数(实际上是coffeescript). 我在这个操作错误中多次调用渲染和/或重定向. 我的代码如下所示: #Model.controllerdef index @models = Model.all my_action if current_user.name == "Bob" #or some oth
我试图从Rails 3.2应用程序中的控制器调用
javascript函数(实际上是coffeescript).
我在这个操作错误中多次调用渲染和/或重定向. 我的代码如下所示: #Model.controller def index @models = Model.all my_action if current_user.name == "Bob" #or some other general conditional ...and some stuff respond_to do |format| format.html format.js #this is needed to handle ajaxified pagination end end def my_action respond_to do |format| format.js { render :js => "my_function();" } #this is the second time format.js has been called in this controller! end end #functions.js.coffee.erb window.my_function = -> i = xy return something_amazing 从控制器调用js函数的正确方法是什么? 解决方法
男人,你错过了阻止的争论.主要错误.
def my_action #respond_to do # This line should be respond_to do |format| format.js { render :js => "my_function();" } end end 而且,Yoshiji先生的观点是正确的.但是你的错误是在服务器端,还没有到达客户端. 对于样式,我认为如果js代码只是一个函数调用就可以了.如果有更多JS代码,最好渲染js模板 # controller format.js # app/views/my_controller/my_action.js.erb my_function(); // and some more functions. 更新:如何修复双重渲染问题 如果满足条件,则必须返回#index,否则方法将继续执行并导致渲染两次或更多次.修复如下: def index @models = Model.all if current_user.name == "Bob" return my_action else # ...and some stuff respond_to do |format| format.html format.js #this is needed to handle ajaxified pagination end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |