Questions tagged «ruby-on-rails»

Ruby on Rails是一个用Ruby编写的开源全栈Web应用程序框架。它遵循流行的MVC框架模型,并以其“配置之上的约定”方法进行应用程序开发而闻名。



9
如何处理Ruby on Rails ActiveRecord迁移中的索引名太长?
我试图添加从四个关联表的外键创建的唯一索引: add_index :studies, ["user_id", "university_id", "subject_name_id", "subject_type_id"], :unique => true 数据库对索引名称的限制导致迁移失败。这是错误消息: 表“研究”上的索引名称“ index_studies_on_user_id_and_university_id_and_subject_name_id_and_subject_type_id”太长;限制为64个字符 我该如何处理?我可以指定其他索引名称吗?

5
如何获得Ruby类的名称?
如何从ActiveRecord对象获取类名? 我有: result = User.find(1) 我试过了: result.class # => User(id: integer, name: string ...) result.to_s # => #<User:0x3d07cdc>" 我只需要一个字符串中的类名(User在这种情况下)。有办法吗? 我知道这是非常基本的,但是我同时搜索了Rails和Ruby的文档,但找不到。

29
使用Rails 3.1,您将“特定于页面的” JavaScript代码放在哪里?
据我了解,您所有的JavaScript都合并为1个文件。默认情况下,Rails在添加//= require_tree .到application.js清单文件的底部时会执行此操作。 这听起来像是真正的救命稻草,但我有点担心页面特定的JavaScript代码。此代码是否在每个页面上执行?我想要的最后一件事是,当只在一页上需要所有对象时,将为每页实例化我的所有对象。 此外,代码是否也可能发生冲突? 或者,您是否script在页面底部放置了一个小的标签,该标签只是调用执行该页面javascript代码的方法? 那么您不再需要require.js吗? 谢谢 编辑:我感谢所有的答案...,我认为他们并没有真正解决问题。其中一些是关于样式的,似乎没有关系...而其他人只是提到javascript_include_tag...,我知道确实存在(显然...),但是看来Rails 3.1的前进方向是包装所有内容。您的JavaScript分成1个文件,而不是在每个页面的底部加载单个JavaScript。 我能想到的最好的解决方案是div用ids或classes 将某些功能包装在标签中。在JavaScript代码中,您只需检查页面上的id或class,如果是,则运行与其关联的JavaScript代码。这样,如果动态元素不在页面上,则JavaScript代码不会运行-即使它已包含在application.jsSprockets打包的海量文件中。 我上面的解决方案的好处是,如果搜索框包含在100个页面中的8个页面中,它将仅在这8个页面上运行。您也不必在网站的8个页面中包含相同的代码。实际上,您再也不必在您的网站上再包含任何手动脚本标记。 我认为这是对我问题的实际答案。

5
Rails I18n验证弃用警告
我刚刚更新到Rails 4.0.2,并且收到以下警告: [不建议使用] I18n.enforce_available_locales将来将默认为true。如果您确实要跳过对区域设置的验证,则可以设置I18n.enforce_available_locales = false以避免出现此消息。 将其设置为false是否存在任何安全问题?

29
没有路线匹配“ / users / sign_out”设计导轨3
我已经在应用程序上安装了devise,并在application.html.erb文件中应用了以下内容: <div id="user_nav"> <% if user_signed_in? %> Signed in as <%= current_user.email %>. This cannot be cheese? <%= link_to 'Sign out', destroy_user_session_path %> <% else %> <%= link_to 'Register', new_user_registration_path %> or <%= link_to 'Sign in', new_user_session_path %> <% end %> </div> 我跑步rake routes并确认所有路线均有效。 另外,在我的routes.rb文件中,我还有devise_for :users和root :to => "home#index"。 单击“注销”链接时,出现以下路由错误: …

4
Rails update_attributes没有保存?
有没有替代update_attributes而不保存记录的方法? 所以我可以做类似的事情: @car = Car.new(:make => 'GMC') #other processing @car.update_attributes(:model => 'Sierra', :year => "2012", :looks => "Super Sexy, wanna make love to it") #other processing @car.save 顺便说一句,我知道我可以@car.model = 'Sierra',但是我想一次全部更新它们。

14
如何在Ruby on Rails 3.1中禁用资产管道(链轮)消息的日志记录?
默认情况下,在Ruby on Rails 3.1(RC1)下,(dev)日志中的链轮往往很冗长: Started GET "/assets/application.css" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Compiled app/assets/stylesheets/application.css.scss (5ms) (pid 6303) Started GET "/assets/application.js" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Compiled app/assets/stylesheets/default.css.scss (15ms) (pid 6303) ... Started GET "/assets/default/header_bg.gif" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Served asset /default/header_logo.gif - 304 Not Modified (7ms) …

7
可以在模型中使用Rails路由帮助器(即mymodel_path(model))吗?
假设我有一个名为Thing的Rails模型。事物具有url属性,可以选择将其设置为Internet上某个地方的URL。在视图代码中,我需要执行以下操作的逻辑: <% if thing.url.blank? %> <%= link_to('Text', thing_path(thing)) %> <% else %> <%= link_to('Text', thing.url) %> <% end %> 视图中的这种条件逻辑是丑陋的。当然,我可以构建一个辅助函数,该函数会将视图更改为: <%= thing_link('Text', thing) %> 这解决了冗长性问题,但是我真的更希望在模型本身中具有功能。在这种情况下,视图代码将是: <%= link_to('Text', thing.link) %> 显然,这将需要模型上的链接方法。这是需要包含的内容: def link (self.url.blank?) ? thing_path(self) : self.url end 问题的关键是,thing_path()是模型代码中未定义的方法。我假设可以将一些辅助方法“拉入”模型,但是如何?并有真正的理由认为路由仅在控制器上运行并查看应用程序层吗?我可以想到很多情况下,模型代码可能需要处理URL(与外部系统集成)。



5
使用NOT NIL条件的Rails
使用rails 3样式,我将如何写相反的东西: Foo.includes(:bar).where(:bars=>{:id=>nil}) 我想找到id不为零的位置。我试过了: Foo.includes(:bar).where(:bars=>{:id=>!nil}).to_sql 但这返回: => "SELECT \"foos\".* FROM \"foos\" WHERE (\"bars\".\"id\" = 1)" 这绝对不是我所需要的,并且几乎就像是ARel中的错误。

7
Bundle exec rake是什么意思?
什么bundle exec rake db:migrate意思 还是bundle exec rake <command>一般而言? 我了解这有助于bundle维护Gemfile中的内容。我知道“ exec”一词的含义。我知道这rake保留了您可以执行的所有不同脚本操作,并且我知道这db:migrate就是其中之一。我只是不知道所有这些词在一起是做什么的。为什么要bundle使用执行rake来执行数据库迁移?

12
在Rails资产管道中使用字体
我在Scss文件中配置了一些字体,如下所示: @font-face { font-family: 'Icomoon'; src: asset-url('icoMoon.eot?#iefix', font) format('embedded-opentype'), asset-url('icoMoon.woff', font) format('woff'), asset-url('icoMoon.ttf', font) format('truetype'), asset-url('icoMoon.svg#Icomoon', font) format('svg'); } 实际的字体文件存储在/ app / assets / fonts /中 我已添加config.assets.paths << Rails.root.join("app", "assets", "fonts")到我的application.rb文件 并且编译的CSS源代码如下: @font-face { font-family: 'Icomoon'; src: url(/assets/icoMoon.eot?#iefix) format("embedded-opentype"), url(/assets/icoMoon.woff) format("woff"), url(/assets/icoMoon.ttf) format("truetype"), url(/assets/icoMoon.svg#Icomoon) format("svg"); } 但是,当我运行该应用程序时,找不到字体文件。日志: 在2012-06-05 23:21:17 +0100投放的资产/icoMoon.ttf-127.0.0.1开始获取“ …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.