目前还没有使用Factory Girl 4.1(我能找到)的最新答案 - 你如何在工厂内建立多对多的关系?
例如,我有使用连接表处于多对多关系的学生和教室,到目前为止,我有以下设置:
factory :classroom do
name "Foo Class"
...
end
factory :student do
name "John Doe"
...
end
factory :student_with_classroom, :parent => :student do
after(:build) {|student| student.classrooms << classroom}
end
Run Code Online (Sandbox Code Playgroud)
然而,这会导致:
NameError:
undefined local variable or method `classroom' for #<FactoryGirl::SyntaxRunner>
Run Code Online (Sandbox Code Playgroud)
我的尝试在很大程度上是猜测,因为我没有运气找到任何未弃用的语法来实现这一目标.
所以我正在尝试对模型伟大的granchildren执行查询.关系如此......
比赛>比赛>比赛>球员
和锦标赛模型:
class Tournament < ActiveRecord::Base
has_many :competitions, :dependent => :destroy
has_many :matches, :through => :competitions
has_many :players, :through => :matches
end
Run Code Online (Sandbox Code Playgroud)
目前我所拥有的用于检索所有伟大的孙子孙记录的是:
@results = @tournament.competitions.collect{|b| b.matches.collect{|c| c.players.with_win_count}}.flatten
Run Code Online (Sandbox Code Playgroud)
这是有效的,但问题是它返回一个数组.我要做的是基于用户输入构建动态查询,并且播放器表本质上是所有匹配的结果池,并且用户可以选择仅过滤他想要看到的内容.我最终得到的是一个相当复杂的(取决于用户输入)查询以及无法在数组上执行的附加where子句.为了让您更好地了解这是如何工作的,这是我的代码......
def results
@tournament = Tournament.find(params[:id])
@results = @tournament.all_great_grandchildren
@results.where(params[:player_condition1]) if params[:player_condition1]
@results.where(params[:player_condition2]) if params[:player_condition2]
@results.where(params[:player_condition3]) if params[:player_condition3]
if params[:match_condition]
#Join to match table so we can query the match fields
@results.join(:match)
@results.where(params[:match_condition])
end
....
@results.order(params[:order]) if params[:order]
end
Run Code Online (Sandbox Code Playgroud)
有没有办法找到没有阵列的任何特定锦标赛的所有伟大的孙子(球员)记录,所以我可以继续调整记录?
所以对某些人来说这似乎是一个显而易见的问题,但在响应式网格中对齐多功能跨度内容的最佳做法是什么?我知道你可以简单地设置一个像素高度,但是这样做会不会失去保持事物响应的目的?
以下面的屏幕截图为例:

<div class="container">
<div class="row">
<div class="span3 well"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec facilisis venenatis sollicitudin. Nam eros risus, lobortis a ultricies sed, interdum in mi. Donec elementum ullamcorper odio, vel gravida velit pretium quis. Donec sagittis, sem nec rhoncus tristique, dui ante volutpat nisl, sit amet feugiat velit lorem sagittis turpis. Quisque laoreet arcu et sapien volutpat nec porta augue iaculis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean accumsan feugiat libero, vel fringilla …Run Code Online (Sandbox Code Playgroud) 这行代码有什么问题?
<%= submit_tag "Delete <i class='icon-check'></i>".html_safe, :disable_with => "Deleting", :class => "btn btn-danger"%>
Run Code Online (Sandbox Code Playgroud)
这实际上产生:

显然我的html_safe调用没有做任何事情.
背景:
我正在使用Twitter Bootstrap以及Font Awesome,我实际上是在尝试实现一个带有图标的提交按钮.
我一直在研究Rails 3 中的 Railscast 子域,以开始向我的 Rails 应用程序添加子域,他提到 localhost:3000 不能很好地与子域配合使用,因此我们使用 lvh.me:
\n\n\n\n\n如果我们访问http://lvh.me:3000/,我们\xe2\x80\x99 将看到应用程序的主页,因为 lvh.me 解析为 IP 地址 127.0.0.1。
\n
好吧,我的应用程序在 127.0.0.1 上的开发模式下在 WEBrick 中运行,导航到该链接不会将我带到我的应用程序,而是会看到:
\n\n\n\n\nFirefox 在 www.lvh.me 上找不到服务器。
\n
我也尝试过http://lvh.me/和http://xyz.lvh.me:3000/ ,没有骰子。
\n\n这只是我的问题还是 lvh.me 现在已经停止使用了?如果有的话还有其他选择吗?
\n我有一堆HTML内容存储在数据库中,我希望将所有相对资产引用转换为使用绝对路径.例如,我的所有图像标记看起来像这样:
<img src=\"/system/images/146/original/03.png?1362691463\">
Run Code Online (Sandbox Code Playgroud)
我正在尝试将" http://mydomain.com "添加到"/ system/images /"位,我有以下代码,我希望能够处理它,但遗憾的是它似乎没有导致任何更改:
text = "<img src=\"/system/images/146/original/03.png?1362691463\">"
text.gsub(%r{<img src=\\('|")\/system\/images\/}, "<img src=\"http://virtualrobotgames.com/system/images/")
Run Code Online (Sandbox Code Playgroud) 我想知道是否在Ruby中编写以下内容的方式很简单:
ext == ".xlsx" || ext == ".xls" || ext == ".ods"
Run Code Online (Sandbox Code Playgroud)
我最初的想法是以下似乎没有按预期工作:
ext == ".xlsx" || ".xls" || ".ods"
Run Code Online (Sandbox Code Playgroud) 我试图在平板电脑和移动设备(如Android手机和平板电脑,iPhone,iPad等)的一个视图中有条件地渲染/隐藏一些HTML.到目前为止,我有这样的设置:
def mobile_agent?
request.user_agent =~ /Mobile|webOS/
end
Run Code Online (Sandbox Code Playgroud)
这似乎工作得很好,但目前它只支持移动设备,而不支持平板电脑.我知道mobile_fu将移动设备和平板电脑归为移动设备类别,但它也会更改我不想要的请求格式.我的Web应用程序正在使用响应式主题,因此视图可以在任何设备下工作,但嵌入式Unity网络播放器除外,我希望将其隐藏在单个视图中.
有什么方法可以扩展上述方法,包括平板电脑和移动设备?
我的Rails应用程序中有一些逻辑检查current_user变量的类类型:
logger.debug current_user.class # => Instructor
logger.debug current_user.class == Instructor # => true
case current_user.class
when Admin
logger.debug "Admin"
when Student
logger.debug "Student"
when Instructor
logger.debug "Instructor"
else
logger.debug "Guest"
end #=> "Guest"
Run Code Online (Sandbox Code Playgroud)
尽管Instructor是类类型(如注释中所示),但似乎case语句总是评估else的后退.有人可以解释一下原因吗?为了给出一点背景知识,我正在使用Devise实现STI用户模型设置.
所以我有以下代码,我想让它更具可读性:
user = User.find_by_username(username)
user = User.new(credentials) if user.nil?
Run Code Online (Sandbox Code Playgroud)
基本上第一行是默认行,如果尚未设置,则以下行将实例化自身.
有没有办法可以清理它并将其放到一行代码中?这样的事情可能是:
user = User.find_by_username(username) || User.new(credentials)
Run Code Online (Sandbox Code Playgroud)
编辑
我现在认识到我提供的代码不正是我需要的,对不起,浪费网络空间,但随时提出替代解决方案.
ruby ×4
refactoring ×2
arrays ×1
css ×1
devise ×1
dynamicquery ×1
factory-bot ×1
font-awesome ×1
grandchild ×1
html-safe ×1
join ×1
logic ×1
many-to-many ×1
mobile ×1
routes ×1
subdomain ×1
tablet ×1
user-agent ×1