这很简单,但是在框架/语言之间切换回来让我自己怀疑.试图has_many :through在Rails中找出关系路由.
#User
has_many :reservations, :dependent => :destroy
has_many :events, :through => :reservations
#Reservation
belongs_to :user
belongs_to :event
#Event
has_many :reservations, :dependent => :destroy
has_many :attendees, through => :reservations, :source => :user
Run Code Online (Sandbox Code Playgroud)
我想要路线,从用户模型我可以快速建立/创建一个新的预订到特定的事件(反之亦然),但不知道如何创建它们.这看起来很奇怪:
resources :users do
resources :reservations, only: [:new, :create, :destroy]
end
resources :events do
resources :reservations, only: [:new, :create, :destroy]
end
Run Code Online (Sandbox Code Playgroud)
无论如何,只是寻找验证,或者可能是另一种方法来处理这个问题.理想情况下,在用户可以点击的事件旁边的页面上有一个链接,(通过ajax或页面重新加载)他们会进行"预订".
出于同样的原因,我需要路由来查看对给定事件有预订的每个用户.并且保留给定用户的每个事件.
我正试图在Passenger/Rails生产环境中设置Redis + Sidekiq,并且遇到了一些困惑.
服务器上运行了许多小型应用程序.我确信这些应用程序中不止一个会利用Sidekiq提供的延迟处理.
我的第一个想法是使用Sidekiq中的命名空间选项namespace为每个Rails应用程序创建一个.
但后来我注意到了一个databases 16设置redis.conf,我想知道它到底是做什么的.除了配置中的注释之外,我似乎无法找到它的文档:
# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16
Run Code Online (Sandbox Code Playgroud)
那么,想知道16'数据库'的默认/示例是否意味着我可以将DB0用于一个应用程序而将DB1用于另一个应用程序?!?我不认为这个假设是正确的,但我找不到更多的信息,除了:
Redis Cluster不支持多个数据库,例如Redis的独立版本,只有数据库0,不允许SELECT.
希望有人可以告诉我如何在同一服务器上运行的各种Rails应用程序之间共享Sidekiq和Redis.
尝试在简单的功能规范中使用javascript,但我甚至无法访问该页面.
describe "DiskFiles" do
...
describe "update action", js: true do
before(:each) do
df = FactoryGirl.create(:disk_file)
visit edit_disk_file_path(df)
end
it "should not show checkmark if no match" do
expect(page).to_not have_content "?"
end
end
end
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
1) DiskFiles update action should not show checkmark if no match
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::RecordNotFound:
Couldn't find DiskFile with id=7598 [WHERE "disk_items"."type" IN ('DiskFile')]
# ./app/controllers/disk_files_controller.rb:89:in `set_disk_file'
Run Code Online (Sandbox Code Playgroud)
这让我感到困惑,因为我刚刚创建了该记录,before(:each) 并在删除时通过了js: true.
我错过了什么?
我的应用程序需要将自定义类的实例与iPhone的AddressBook中的联系人记录相关联.当我呈现ABPeoplePickerNavigationController并允许用户选择现有联系人时,一切都很好.问题是,有没有明显的方式,让用户可以轻松地添加一个联系人记录,如果他们正在寻找一个不已经在他们的通讯录存在.
人们如何以一种简单直观的方式从ABPeoplePickerNavigationController到ABNewPersonViewController?
头开始疼.我想我的速度太快了......也许有人可以帮我看一下这些(不包括OpenGL ES)高级绘图库如何组合在一起 - 或者指向一些高级文档.例如,我看到"context"和"view"在某些情况下可以互换使用,但是一个视图有一个(只有一个?)上下文,而上下文没有视图?!?
没有什么太复杂,只需要帮助可视化他们的差异和他们的界限(何时使用一个而不是另一个).
我问我的ViewController它的view.center属性并绘制一个新的UIView,它围绕着这个"中心"......我得到(160,250)作为回应.但是当新的UIView把它拉到中心以下时 ......所以我想知道是谁给了我这个信息以及它与它有什么关系?如果考虑状态栏的20px高度,这显然是视图中心与WINDOW的关系.这将推动视图中心向下10px.但是当绘制myView时,它似乎与ViewController.view而不是Window相关,因此它显示在中心下方20px ...
我希望ViewController能给我它的中心(160,230)所以我可以在它的中心绘制...我是否需要手动计算状态栏并每次从高处减去20?还是有一些我忽视的观看空间翻译?从ViewController.m:
- (void)setUpMyView {
// Create my view
MyView *aView = [[MyView alloc] init];
self.myView = aView;
[aView release];
myView.center = self.view.center;
NSLog(@"CenterX: %f, Y: %f", self.view.center.x, self.view.center.y);
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2);
myView.transform = transform;
[self.view addSubview:myView];
Run Code Online (Sandbox Code Playgroud)
}
控制台:CenterX:160.000000,Y:250.000000
我需要弹出一个快速对话框,让用户从大约2-5项的列表中选择UITableView中的一个选项.对话框将是模态的,只占用屏幕的1/2左右.我在如何处理这个问题之间来回走动.我应该继承UIView并使它成为UITableViewDelegate&DataSource?
我也更愿意在IB中列出这个观点.所以要显示我从我的视图控制器做这样的事情(假设我的视图控制器中有一个属性DialogView *myDialog;)
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"DialogView" owner:myDialog options:nil];
myDialog = [nibViews objectAtIndex:0];
[self.view addSubview:myDialog];
Run Code Online (Sandbox Code Playgroud)
问题是我正在尝试传递所有者:myDialog是nil,因为它尚未实例化...我可以传递所有者:self但这将使我的视图控制器,File's Owner而不是如何在IB中连接该对话视图.
所以这让我觉得这个对话想要成为另一个全面的UIViewController...但是,从我所读过的所有内容中,每个屏幕应该只有一个UIViewController,所以这让我感到困惑,因为我可以从viewDidLoad视图中获益等等控制器...
有人可以帮我解决这个问题吗?
通过clarkware的iphone-rails-tutorial工作,并尝试构建和运行包含的最终rails代码,但每当我尝试访问localhost时,我在服务器的控制台中都会收到此错误:3000 /
ActionController::RoutingError (uninitialized constant ApplicationController::Authentication):
app/controllers/application_controller.rb:5:in `<class:ApplicationController>'
app/controllers/application_controller.rb:1:in `<top (required)>'
app/controllers/goals_controller.rb:2:in `<top (required)>'
Rendered /Users/joeuser/.rvm/gems/ruby-1.9.2-p0@rails3/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.6ms)
Run Code Online (Sandbox Code Playgroud)
以前包含的示例代码的"里程碑"运行得很好.只有最后一个抛出错误......
这是什么意思?我没有想到的猜测是,有一种类型的认证宝石缺失,但我无法弄清楚哪一个.除了默认的rails&sqlite3-ruby之外,Gemfile中没有列出任何内容......并且文档中没有提及任何身份验证框架.
任何人都明白这个错误或熟悉教程,知道发生了什么?
我似乎无法找到与本教程相关的论坛,所以我想我会在这里查询.如果你知道一个,请指导我参加活动论坛.
如果我cap deploy从工作站执行,如何在配方运行时指定要在工作站的控制台中显示的自定义反馈?
这让我感到困惑,因为Capistrano在部署机器(或服务器)上运行其"任务",因此run 'echo "this is my message"'只会出现在服务器的控制台中.
任何人都知道为什么我的一些json元素被反斜杠(\)转义而其他人没有?
{"first":"John","last":"Smith","dogs":"[{\"name\":\"Rex\",\"breed\":\"Lab\"},{\"name\":\"Spot\",\"breed\":\"Dalmation\"},{\"name\":\"Fido\",\"breed\":\"Terrier\"}]"}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望他们中没有人逃脱......
这是通过覆盖as_json两个模型生成的.人has_many狗.
#models/person.rb
class Person < ActiveRecord::Base
has_many :dogs
def as_json(options={})
{
:first => first,
:last => last,
:dogs => dogs.to_json
}
end
end
#models/dog.rb
class Dog < ActiveRecord::Base
belongs_to :people
def as_json(options={})
{
:name => name,
:breed => breed
}
end
end
Run Code Online (Sandbox Code Playgroud) cocoa-touch ×4
iphone ×3
uiview ×2
addressbook ×1
capistrano ×1
capybara ×1
cocoa ×1
json ×1
object-graph ×1
passenger ×1
redis ×1
routes ×1
rspec ×1
sidekiq ×1
uitableview ×1