我发现很多文章向我展示了EventMachine是什么以及如何建立无尽的"Hello World!" 例子,但我仍然不知道如何与我的Rails应用程序集成.
作为一个例子,我有一个现有的Rails应用程序,它有许多并发用户可能同时在我的数据库中编辑同一行.我想我会允许两个(或更多)不同的人加载记录,但是如果记录被更新则通知这些用户并强制后者用户在将任何冲突的更改保存回数据库之前进行协调.我以为我可以使用客户端上的Javascript和websockets(或flashsockets)来处理通知和对帐,以便与浏览器进行通信(在另一个用户更新记录的事件上 - 如推送通知等).
最后一部分让我进入EventMachine,但是 - 正如我的引导问题所示 - 我对如何将其集成到我的Rails应用程序中感到茫然.
任何人都可以给我一些洞察力(比如,一个好的宏观层面观点)或指向一些好的资源吗?(除了EventMachine的维基,因为我已经去过那里).
我有一个裸导轨3应用程序与一个模型,生成使用rails g model User.
我添加了一个工厂(使用factory_girl_rails):
Factory.define :user do |f|
f.email "test@test.com"
f.password "blah"
f.password_confirmation "blah"
f.display_name "neezer"
end
Run Code Online (Sandbox Code Playgroud)
然后我添加了一个测试:
require 'spec_helper'
describe User do
subject { Factory :user }
it "can be created from a factory" do
subject.should_not be_nil
subject.should be_kind_of User
end
end
Run Code Online (Sandbox Code Playgroud)
然后我使用迁移我的数据库rake db:migrate.
然后我使用运行测试rspec spec,测试失败,并带有以下内容:
Failures:
1) User can be created from a factory
Failure/Error: subject { Factory :user }
ActiveRecord::StatementInvalid:
Could not find table 'users'
# ./spec/models/user_spec.rb:5:in …Run Code Online (Sandbox Code Playgroud) 我有一个表单,根据调用它的参数显示不同.
防爆.
testsite.local/users/new?type=client
Run Code Online (Sandbox Code Playgroud)
因此,如果type是a或b,表单将显示不同的字段.
我的问题是表单填写不正确,因为如果用户无法正确保存,它会使用默认错误消息呈现表单,但也没有我的参数.
testsite.local/users/new
Run Code Online (Sandbox Code Playgroud)
如何调用我的render动作并传递此参数设置的内容?所以我仍然可以保留我内置的错误消息,说明为什么表单无法正确汇总并使其成为正确的表单?
这是我的create行动:
def create
@user = User.new(params[:user])
roles = params[:user][:assigned_roles]
if @user.save
update_user_roles(@user,roles)
if current_user.is_admin_or_root?
flash[:message] = "User \"#{@user.username}\" created."
redirect_to users_path
else
flash[:message] = "Congrats! You're now registered!"
redirect_to app_path
end
else
render :action => 'new'
end
end
Run Code Online (Sandbox Code Playgroud) 你知道在某些网站上你被要求上传一个头像,你点击按钮,选择你的文件,然后点击确定,但在你提交页面之前(如在,没有创建/更新记录),显示图像的一些预览?
我将如何使用Paperclip for Rails 实现这一目标?
对于任何可以指向我的教程或可能告诉我如何在保存记录之前对图像进行Javascript裁剪的人的奖励积分.
我无法在Google上找到关于此主题的更多内容...感谢您的帮助!
这是我的问题的快速和紧张:
$("a").toggle(function() { /*function A*/ }, function() { /*function B*/ });
在function A表单内显示.如果用户成功完成表单,则表单将再次隐藏(返回其原始状态).
里面function B相同的形式是隐藏的.
这背后的理论是用户可以选择显示表单并填写表单,或者他们可以再次单击并让表单重新隐藏.
现在我的问题是:目前,如果用户成功填写表单 - 并且它进入隐藏状态 - 用户必须先点击链接两次才能返回显示表单的切换状态.
无论如何以编程方式将切换开关重置为初始状态?
这是我的代码:
records_hash = records[:id].inject({}) { |result,h|
if result.has_key?(h)
result[h] += 1
else
result[h] = 1
end
result
}
@test2 = records_hash.each{|key,value| puts "#{key} is #{value}"}
Run Code Online (Sandbox Code Playgroud)
我的输出应该如下所示:
bozo is 3
bubba is 4
bonker is 5
Run Code Online (Sandbox Code Playgroud)
但它在页面(<%= @test2 %>)上呈现如下:
bozo3bubba4bonker5
Run Code Online (Sandbox Code Playgroud)
我尝试过类似块的.each_key和.each-value,它们都返回上面相同的字符串.我在IRB中运行相同的代码,它按预期工作.
我究竟做错了什么?
我有一个带有active列的模型,它是一个布尔值.我想验证所有新添加的记录的唯一性company_id,这样我就可以根据需要添加任意数量的记录,company_id只要active设置为false.active每个应该只有一个记录company_id.
我怎么写这个?我已经尝试过了:
validates :company_id, :uniqueness => { :scope => :active }
Run Code Online (Sandbox Code Playgroud)
但是,这似乎也验证对独特的组合active是false(例如,我永远不可能有两个以上company_id表中的具有相同active的地位,不管是什么active是) -验证上述允许两个记录company_id,一个与active = false和其他的active = true.一旦这两个记录进入,验证就会阻止其他所有记录.
然后我尝试添加这个:
scope :active, where(:active => true)
Run Code Online (Sandbox Code Playgroud)
但这似乎没有改变验证(与上面相同的问题).
我怎么能写这样的验证,这样我可以用相同的添加尽可能多的记录company_id,只要active是假的,只允许一个active = true每company_id?
我正在建立一个CMS系统来管理营销登陆页面.在"编辑登录页面"视图中,我希望能够为用户正在编辑的任何登录页面加载相关的样式表.我怎么能用React做这样的事情?
我的应用程序是完全React,同构,在Koa上运行.我的相关页面的基本组件层次结构看起来像这样:
App.jsx (has `<head>` tag)
??? Layout.jsx (dictates page structure, sidebars, etc.)
??? EditLandingPage.jsx (shows the landing page in edit mode)
Run Code Online (Sandbox Code Playgroud)
着陆页的数据(包括要加载的样式表的路径)是异步提取EditLandingPage的ComponentDidMount.
如果您需要任何其他信息,请与我们联系.很想得到这个想法!
额外奖励:我还想在离开页面时卸载样式表,我认为我可以反过来回答任何问题ComponentWillUnmount,对吧?
我需要在多个可点击元素的顶部叠加标签.我希望能够通过顶部的标签点击元素.
这可能吗?如果是这样,我将如何做到这一点?
我正在尝试将SlickGrid与jQuery Layout UI一起使用,我希望SlickGrid占据其父窗格的100%高度.
问题是,当实例化SlickGrid时,它没有行(我的ajax接口的一部分稍后加载数据,而不是页面加载),因此默认情况下高度设置为1px(加上标题的高度).当我稍后加载数据时,我看不到任何行.
我已经尝试将SlickGrid DOM元素设置为height: 100%;,但这没有任何作用.如何强制SlickGrid画布占据其所在窗格的100%高度,即使它具有较少的数据行?
jquery ×2
eventmachine ×1
factory-bot ×1
hash ×1
javascript ×1
layout ×1
model ×1
paperclip ×1
parameters ×1
raphael ×1
reactjs ×1
render ×1
reset ×1
rspec ×1
ruby ×1
slickgrid ×1
stylesheet ×1
svg ×1
toggle ×1
validation ×1