gpt4 book ai didi

javascript - rails |如何访问 js.erb 文件中的哈希值

转载 作者:行者123 更新时间:2023-12-03 04:48:01 24 4
gpt4 key购买 nike

我有一个带有 remote:true 选项的函数。

def get_user_info
...

respond_to do |format|
if !response.nil?

r = response.to_hash
@data = {:IsLoggedIn => true, :ErrorMessage => "", :response => r }
else

error = "There is an error occurred."
@data = {:IsLoggedIn => false, :ErrorMessage => error, :response => "" }
end
format.js { render :json => @data }
format.html
end
end

然后我有我的get_user_info.js.erb,我想访问其中的ErrorMessage。

我一直在尝试,但即使 console.log('try') 也不起作用。

我的目标是将错误消息或 r(响应)附加到正文。但无法访问@data变量。

最佳答案

完成您想做的事情需要三个步骤(我猜)。

首先:将 Controller 中的数据设置为您想要发送和接收的数据,然后在 View 中:

# _controller.rb

def method_name
if !response.nil?
r = response.to_hash
@data = {:IsLoggedIn => true, :ErrorMessage => "", :response => r }

# response = response.to_hash
# @data = {is_logged_in: true, error_message: '', response: response }
else
error = "Russia terrorist state"
@data = {:IsLoggedIn => false, :ErrorMessage => error, :response => "" }
end

format.js
format.html
end

第二:创建js.erb文件,以便接收 Controller 中方法发送的数据:

# method_name.js.erb

console.log("<%= escape_javascript(@data[:ErrorMessage]) %>")

在这里,您只需在控制台中打印您收到的内容即可测试是否成功。

第三:使用 AJAX 触发函数以获取 View 中的数据:

# method_name.html.erb

<script>
$.ajax({
type: 'GET',
url: '/<method_name>',
dataType: 'script'
});
</script>

顺便提一下:

当你的散列键是符号时,为什么不使用散列文字语法?,如此处所述 https://github.com/bbatsov/ruby-style-guide#hash-literals

为什么不使用更具表现力的方式来命名变量呢?正如这里提到的http://www.itiseezee.com/?p=83

关于javascript - rails |如何访问 js.erb 文件中的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42786532/

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