我是rails的新手,并尝试通过复选框和使用jquery ajax更改布尔值:
<%- @tasks.each do |task| %>
<div class="task-wrapper">
<%= check_box_tag 'completed', task.id , task.completed, :class => "task-check" %>
<%= content_tag :span, task.task %>
<%= content_tag :span, task.deadline %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
和javascript:
$(".task-check").bind('change', function(){
if (this.checked){
var bool = this.checked ? 1 : 0;
$.ajax({
url: '/todos/toggle',
type: 'POST',
data: '{"task_id":"'+ this.value +'", "bool":"'+ bool +'"}'
});
}
else {
alert("no");
}
});
Run Code Online (Sandbox Code Playgroud)
那么控制器:
def toggle(task_id, bool)
@task = Todo.find_by_id(task_id)
if @task != nil?
@task.update_attributes(:completed => bool)
else …Run Code Online (Sandbox Code Playgroud) 我正在使用Cucumber编写我的集成测试和数据库清理程序以保持我的数据库清理.一切都很完美,因为我的测试不需要Javascript.
我可以使用Capybara webkit使这些最后的测试通过,但是我的数据库根本没有被清理.
这是我的features/support/env.rb文件:
require 'simplecov'
SimpleCov.start 'rails'
require 'cucumber/rails'
Capybara.default_selector = :css
Capybara.javascript_driver = :webkit
begin
require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner[:active_record].strategy = :transaction
rescue NameError
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end
Before do
DatabaseCleaner.start
end
After do |scenario|
DatabaseCleaner.clean
end
Run Code Online (Sandbox Code Playgroud)
我想类似的东西这个检查是哪个驱动程序所使用的水豚,但没有奏效.我也试过了这篇文章第三部分中提到的hack,但后来没有任何工作......
我真的不知道如何实现这一点,任何帮助将不胜感激.
提前致谢.
ruby-on-rails cucumber capybara capybara-webkit database-cleaner
我有几个对象都有一个approved字段.
在所有模型中实施范围的最佳方法是什么?
例如,我有一个sighting对象和一个comment对象.在向公众提供之前,他们都必须得到管理员的批准.
所以,我怎么可以创建一个返回范围comment.approved以及sighting.approved分别不重复它在每一个模型?这是关注的问题吗?
我的模型中有以下验证器:
class ContinuumValidator < ActiveModel::Validator
def validate(record)
if !record.end_time.nil? and record.end_time < record.start_time
record.errors[:base] << "An event can not be finished if it did not start yet..."
end
end
end
class Hrm::TimeEvent < ActiveRecord::Base
validates_with ContinuumValidator
end
Run Code Online (Sandbox Code Playgroud)
如何使用Rspec进行测试?
这是我到目前为止所尝试的:(感谢zetetic)
describe "validation error" do
before do
@time_event = Hrm::TimeEvent.new(start_time: "2012-10-05 10:00:00", end_time: "2012-10-05 09:00:00", event_type: 2)
end
it "should not be valid if end time is lower than start time" do
@time_event.should_not be_valid
end
it "raises an error if …Run Code Online (Sandbox Code Playgroud) 我正在开发一个像 Mac Mail 这样的应用程序。我有一个允许用户编写新消息的 WebView。我实现了拖放功能,以便用户可以通过这种方式向消息添加附件。
为简单起见,我有一个包含 WebView 和其他视图的主视图。我在这个主视图上实现了拖放(使用 draggingEntered: 和 performDragOperation: 方法)并且它按预期工作。
问题是默认情况下,当在 WebView 中拖动文件时,例如图像,图像将显示在 WebView 中。但我不希望那样,我希望将其添加为附件,这就是为什么我禁用了 WebView 中的拖放功能:
def webView(sender, dragDestinationActionMaskForDraggingInfo:draggingInfo)
WebDragDestinationActionNone
end
Run Code Online (Sandbox Code Playgroud)
但是现在我的文件将被添加为附件,如果我将它拖动到主视图内的任何位置,除了在 WebView 中(在这种情况下不调用 draggingEntered: 和 performDragOperation: 方法)。
我不知道我的问题是否足够清楚以找到答案,我还是 Cocoa 开发的新手,所以如果您需要更多详细信息,请随时告诉我。另一件事,我正在使用 Rubymotion,但如果您在 Objective-C 中有解决方案,那也将是完美的!
感谢您的任何帮助或建议。
解决方案
我子类化了 WebView 并覆盖了该performDragOperation方法以使其工作:
def performDragOperation(sender)
self.UIDelegate.mainView.performDragOperation(sender)
end
Run Code Online (Sandbox Code Playgroud) 我是 OSX 开发的初学者,所以我希望我的问题能在这里找到解决方案。
我的NSTokenField应用程序中有一个,我实现了该tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:方法。
一切正常,但目前的结果是这样的:

我想要的是让它看起来像这样:(类似于邮件应用程序中的完成)

这意味着我希望完成列表采用所有 NSTokenField 宽度。使用Accessibility Inspector,我可以看到与第一个 sreenshot 对应的层次结构是:
AXScrollArea -> AXList -> AXTextField
而对应于第二个屏幕截图的是:
AXScrollArea -> AXTable -> AXRow:AXTableRow -> AXTextField
所以我想我必须使用 anNSTableView来显示完成列表,但我不知道如何实现。有谁知道这怎么可能?
在此先感谢您的帮助。
编辑
至少有 2 人建议我实现该tokenField:menuForRepresentedObject:方法并使用适当的NSMenu属性定义菜单宽度。但是这个方法用于为给定的令牌定义一个菜单,我已经实现了它:
def tokenField(tokenField, menuForRepresentedObject:representedObject)
theMenu = NSMenu.alloc.initWithTitle("Email address context menu")
item_0 = theMenu.insertItemWithTitle('add_to_address_book'.localized, action:'add_to_address_book', keyEquivalent:"", atIndex:0)
item_0.setTarget(self)
item_1 = theMenu.insertItemWithTitle('new_message'.localized, action:'new_message', keyEquivalent:"", atIndex:1)
item_1.setTarget(self)
theMenu
end
Run Code Online (Sandbox Code Playgroud)
这给了我这样的东西:

很棒的东西,但不是我在这里问的。
路由的代码如下:
resources :orders, only: [:create], defaults: { format: 'json' }
resources :users, only: [:create, :update], defaults: { format: 'json' }
resources :delivery_types, only: [:index], defaults: { format: 'json' }
resources :time_corrections, only: [:index], defaults: { format: 'json' }
Run Code Online (Sandbox Code Playgroud)
可以使用1个字符串为所有资源设置默认格式,每行不带"defaults"哈希值?谢谢.
我有两个相关的模型:Group和Member.
Group.rb:
has_many :members, :dependent => :destroy
accepts_nested_attributes_for :members, :reject_if => lambda { |a| a[:email].blank? and a[:id].blank? }, :allow_destroy => true
Run Code Online (Sandbox Code Playgroud)
我想要做的是添加一个验证,以防止member_count达到25后立即添加成员.
因此,如果我编辑一个组,请举例说:
它应保存前5个记录,然后引发错误,例如"您已超出嵌套属性的限制".
在rails中是否有任何内置方法来执行此操作.作为一个比较新手的铁路我不知道这个?
显示C:/Users/ManU/Desktop/quick_blog/app/views/posts/show.html.erb第3行引发的位置:
Missing partial posts/post with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "C:/Users/ManU/Desktop/quick_blog/app/views"
Run Code Online (Sandbox Code Playgroud)
提取的来源(第2行):
1. <p id="notice"><%= notice %></p>
2. <%= render :partial => @post %>
3. <%= link_to 'Edit', edit_post_path(@post) %> |
4. <%= link_to 'Back', posts_path %>
Run Code Online (Sandbox Code Playgroud)
我是铁轨上的红宝石......所以不知道如何处理这个问题......请帮我解决这个问题....
ruby ×3
cocoa ×2
macos ×2
objective-c ×2
rubymotion ×2
validation ×2
boolean ×1
capybara ×1
cucumber ×1
jquery ×1
limit ×1
routes ×1
rspec ×1
rspec-rails ×1