gpt4 book ai didi

ruby-on-rails - 如何从 Rails 中的 Controller 调用 javascript 函数

转载 作者:行者123 更新时间:2023-12-04 17:18:34 25 4
gpt4 key购买 nike

我正在尝试从 Rails 3.2 应用程序中的 Controller 调用 javascript 函数(实际上是 coffeescript)。

我收到了 Render and/or redirect were called multiple times in this action错误。

我的代码如下所示:

#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

从 Controller 调用 js 函数的正确方法是什么?

最佳答案

伙计,你错过了阻止的论点。主要错误。

def my_action
#respond_to do # This line should be
respond_to do |format|
format.js { render :js => "my_function();" }
end
end

吉二先生的观点是对的。但是你的错误是在服务器端,还没有到达客户端。

对于样式,我认为如果 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

关于ruby-on-rails - 如何从 Rails 中的 Controller 调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16697333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com