【问题标题】:How can I call javascript functions from controller action using ROR如何使用 ROR 从控制器操作中调用 javascript 函数
【发布时间】:2015-04-08 21:13:18
【问题描述】:

有人可以帮我解决一个小问题吗?实际上我想从控制器操作方法中调用一些 javascript 函数。我已经编写了一些代码,但它不起作用。因为我对 ROR 完全陌生,可能是我做错了某处。请检查我下面的代码 sn-ps 并修改它们以成功运行。

我的代码sn-ps如下。

视图/用户/index.html.erb:

<center>
    <h1>....Testing...</h1>
    <p>
        <a href="/users/browser"><button type="button">Check Browser</button></a>
    </p>
    <p>
        <a href="/users/time"><button type="button">Check Time</button></a>
    </p>
</center>

控制器/users_controller.rb:

class UsersController < ApplicationController
    def index

    end
    def browser
        respond_to do |format|
            format.js{render :js => "my_browser();"}
        end
    end
    def time
        respond_to do |format|
            format.js{render :js => "my_time();"}
        end
    end
end

application.js:

function my_browser(){
    console.log('my browser function');
    var objOffsetVersion;
    if (objOffsetVersion=navigator.userAgent("chrome") != -1) {
        objOffsetVersion="chrome"
    };
    alert(objOffsetVersion) ;
}
function my_time(){
    var d = new Date();
    var currtime = d.getHours() * 100 + d.getMinutes();
    alert(currtime);
}

routes.rb

Jscript::Application.routes.draw do
  root :to => "users#index"
  get "users/browser" => "users#browser"
  get "users/time" => "users#time"
end

请帮助我..提前谢谢。

【问题讨论】:

标签: javascript ruby ruby-on-rails-3


【解决方案1】:

尝试更改链接以使用 js 格式,因为您明确告诉控制器通过 format.js 块处理 js:

<center>
  <h1>....Testing...</h1>
  <p>
      <a href="/users/browser.js"><button type="button">Check Browser</button></a>
  </p>
  <p>
    <a href="/users/time.js"><button type="button">Check Time</button></a>
  </p>
</center>

作为替代方案,您可以告诉 rails 始终在控制器中为所有格式呈现 js:

class UsersController < ApplicationController
  def index
  end

  def browser
    render :js => "my_browser();"
  end

  def time
    render :js => "my_time();"
  end
end

希望这能提供一些帮助。

【讨论】:

  • 根据您在编辑代码后的指示,我只得到字符串(ie-my_browser)作为结果。但我的目标是调用 my_browser 函数并在其中执行警报提示。还有什么建议.. ?
猜你喜欢
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2017-08-22
  • 2012-08-05
  • 2013-12-15
  • 1970-01-01
  • 2017-07-25
相关资源
最近更新 更多