如何使用 Rails 3.0.3 和 Ruby 1.9.2 将 javascript 放入控制器中

How to put javascript in the controller using Rails 3.0.3 and Ruby 1.9.2

提问人:johan 提问时间:2/25/2011 更新时间:2/26/2011 访问量:1744

问:

有人可以告诉我如何将javascript放入控制器中。我在会话控制器中尝试了这样的事情:

def sign_in
  if user.nil?
      @title = "Sign in"
      render :js => "alert('Invalid email/password combination.');"
  else
      sign_in user
      redirect_back_or user      
  end
end

当我尝试这样做时,页面以文本格式显示:alert('无效的电子邮件/密码组合。

我不想使用闪光消息。我真的很想使用 javascript 警报......请帮忙...

Ruby Ruby-on-Rails-3 不显眼的 JavaScript

评论

0赞 Zimbabao 2/25/2011
显然它不起作用,请检查这个要点 gist.github.com/416046。使用javascript_tag

答:

3赞 Dan 2/26/2011 #1

对于 UJS 方式,请这样做:

在您的 controller.rb 中

def sign_in
  if user.nil?    
      @title = "Sign in"    
      respond_to do |format|            
          format.js    
      end
    end    
  else    
      sign_in user    
      redirect_back_or user          
  end    
end

*在sign_in。js.erb*

alert('Invalid email/password combination.');

这将使你很好地分离教会和国家。controller.rb 中的所有 ruby 代码,view.js.erb 中的所有 javascript。

评论

0赞 johan 2/28/2011
非常感谢你。我头疼得很厉害,但你给了治疗......我对rails很陌生。
0赞 johan 2/28/2011
一个简短的问题...如果我的控制器名称是 sessions_controller.rb,操作是sign_in,那么我的 ujs 应该叫什么名字?是 sign_in.js.erb 还是 sessions.js.erb?我有点困惑,如果在每个动作中我都要创建一个新的js.erb。
0赞 rails_has_elegance 7/19/2012
应为 [操作] .js [控制器] 视图文件夹中的 .js.erb