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

标签 javascript ruby-on-rails ajax controller

我有一个带有 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/

相关文章:

javascript - Console.log 不适用于 Reactjs 应用程序

javascript - 保留表单提交后显示的div

javascript - 我可以将 API 中的信息放到另一个页面吗?

ruby-on-rails - Ruby 尝试不处理异常

javascript - 在 JavaScript 中将方法用作(curried)函数

ruby-on-rails - 如何使 Rails 3 路由器使用本地化文件本地化 URL?

ruby-on-rails - 在 Rails 中使用准备好的语句插入多行

jquery - 使用 Tornado 向ajax发送响应

ajax - 如何使用 mongoose.js 合并更新文档?

javascript - 我试图在单击图像时从 Sharepoint 列表中检索信息