我想检查模型上的属性何时发生了变化.我试图检查值!=在执行保存之前表单上的值但该代码实际上很难看并且有时不能正常工作.与使用update_column相同,update_column不在我的模型类中进行验证.如果我使用update_attributes而不做其他事情,我将无法检查何时根据我的理解更新字段.从我对Stack Overflow和其他网站的网络研究看来,使用ActiveModel Dirty是可行的方法.
我看过这个:http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
我希望在使用update_attributes之后使用它来检查模型上是否更改了布尔标志.我尝试按照附带链接中的描述进行最小化实施.我在ActiveRecord类中添加了以下内容:
include ActiveModel::Dirty
define_attribute_methods [:admin]
Run Code Online (Sandbox Code Playgroud)
我尝试添加我想要跟踪的三个属性.我从一个属性开始,看看我是否能让它工作.我运行rspec测试时收到以下错误.一旦我删除了论点,我就没有错误.
Exception encountered: #<ArgumentError: wrong number of arguments (1 for 0)>
Run Code Online (Sandbox Code Playgroud)
删除参数后,我决定使用admin而不是name在我的模型中包含类似的方法.其他Rspec测试打破了save方法.但是我觉得问题在于我如何实现ActiveModel Dirty.
我已阅读其他Stack Overflow帖子,其中评论者表示这已包含在3.2.8中,因此我从3.2.6升级到3.2.8.我不明白这是什么意思所以在得到错误之后我决定离开include ActiveModel :: Dirty语句并尝试使用admin_changed?当然它没有用.
除了我在这里提供的链接之外,我还没有找到任何关于如何为此设置的内容.我发现的所有其他研究都假定初始设置是正确的,并且更新到当前稳定版本的Rails会解决他们的问题.
任何帮助将不胜感激如何实现这一点.执行链接中所述的最小实现是行不通的.也许还有一些我想念的东西.
我目前有几个Ruby on Rails应用程序,我通过媒体查询使用响应式网页设计.我使用以下CSS代码将宽度覆盖到100%.
#twitter-widget-0, #twitter-widget-1 {
float: none;
width: 100% !important;
font-size: 12px;
}
Run Code Online (Sandbox Code Playgroud)
但是我在2015年7月注意到Twitter小部件不再以100%显示,而是以固定大小显示.我检查了Twitter的开发者网站,发现Twitter小部件的定制已经扩展.当我检查小部件时,我看到我在CSS中的CSS参数,但我也看到宽度设置为520px.
https://dev.twitter.com/web/embedded-timelines
看看这个链接,我知道我可以在代码中使用固定宽度编码参数.不知道任何人可能用来显示我的Web应用程序的屏幕大小我不愿意在任何地方设置固定大小.另一个问题是我的媒体查询不会改变它.
我找到的关于自定义当前Twitter小部件的唯一链接是下面的链接.其中大部分来自2011 - 2013年.
有人在Wordpress中使用Twitter小部件询问了这个问题.解决方案使用jQuery.我在Javascript中不够擅长实现Javascript或jQuery解决方案,所以我不知道它是否适用于我.
2015年7月16日更新1100 GMT-5
我决定今天早上再做一次搜索,发现这个链接有三个最近的jQuery解决方案,人们说他们开始工作了.
我添加了以下行application.html.erb来更正$的ReferenceError.我虽然jquery-rails gem会识别我的代码.
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
我创造了一个小提琴.当我点击JSHint时,它说我的代码完全有效.窗口小部件的宽度为552px.我不确定问题是否在于我有代码的地方.我需要帮助来确定为什么我的jQuery代码没有实现我的目标.
当我检查Twitter小部件时,这是iframe语句:
<iframe id="twitter-widget-0" scrolling="no" frameborder="0" allowtransparency="true" class="twitter-timeline twitter-timeline-rendered" allowfullscreen="" style="border: none; max-width: 100%; min-width: 180px; margin: 0px; padding: 0px; display: inline-block; position: static; visibility: visible; width: 520px;" title="Twitter Timeline" height="400">
.......widget statements.............
</iframe>
Run Code Online (Sandbox Code Playgroud) 当我在我的Rails应用程序的根目录中时,我可以成功执行rails server.但是,当我尝试做rails console或rails c我得到以下错误.
[myrailsapp (master)]$ rails c
/Users/myuserid/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb/completion.rb:10:in `require': dlopen(/Users/myuserid/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib (LoadError)
Referenced from: /Users/myuserid/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/readline.bundle
Reason: image not found - /Users/myuserid/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/readline.bundle
from /Users/myuserid/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb/completion.rb:10:in `<top (required)>'
from /Users/myuserid/.rvm/gems/ruby-2.3.0@mygemset/gems/railties-4.2.5.2/lib/rails/commands/console.rb:3:in `require'
from /Users/myuserid/.rvm/gems/ruby-2.3.0@mygemset/gems/railties-4.2.5.2/lib/rails/commands/console.rb:3:in `<top (required)>'
from /Users/myuserid/.rvm/gems/ruby-2.3.0@mygemset/gems/railties-4.2.5.2/lib/rails/commands/commands_tasks.rb:123:in `require'
from /Users/myuserid/.rvm/gems/ruby-2.3.0@mygemset/gems/railties-4.2.5.2/lib/rails/commands/commands_tasks.rb:123:in `require_command!'
from /Users/myuserid/.rvm/gems/ruby-2.3.0@mygemset/gems/railties-4.2.5.2/lib/rails/commands/commands_tasks.rb:58:in `console'
from /Users/myuserid/.rvm/gems/ruby-2.3.0@mygemset/gems/railties-4.2.5.2/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/myuserid/.rvm/gems/ruby-2.3.0@mygemset/gems/railties-4.2.5.2/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我已经完成了网络搜索,但我没有找到任何解决此类错误的方法.
我已经从我的Rails 3.2.13应用程序中删除了gem routing-filter,准备将其升级到Rails 4.作者有一个Rails 4的测试版,但我永远无法让它工作.我已经实现了用于本地化/国际化的正常Rails过程.我需要解决的最后一个问题是link_to语句,它在邮件程序视图中显示一个线程.
当我使用路由过滤器时,我有如下所示的link_to语句,我根据环境在邮件程序中设置@host.
<%= link_to "#{t :view_thread}", micropost_url(@item), host: "#{@host}" %>
Run Code Online (Sandbox Code Playgroud)
当我卸载路由过滤器时,由于在尝试发送电子邮件时缺少区域设置,我开始收到错误.它崩溃并将应用程序发送回登录页面.宝石负责这件事.
我一直在寻找大约一个小时试图找到正确的语法,但我找不到包含主机和语言环境参数的任何示例.我已经尝试了几次猜测但是我遇到了语法错误.
任何帮助,将不胜感激.我会一直在寻找和尝试.