我试图在视图中写一条if if语句.
<%= collection.name ? collection.name : @miniature.name %>
Run Code Online (Sandbox Code Playgroud)
如果存在,我希望它放入collection.name,否则我希望它放入@minile.name
更新 我试图让Factory Girl用日期,随机日期填写我的"发布日期"字段,坦率地说现在是任何日期,因为当我运行时我不断收到"验证失败:发布日期不能为空"错误我的item_pages_spec.rb
在下面的一些帮助之后,他就是我在我的factory.rb中的项目页面,但我现在尝试了很多不同的东西.
factory :item do
sequence(:name) { |n| "Item #{n}" }
release_date { rand(1..100).days.from_now }
end
Run Code Online (Sandbox Code Playgroud)
理想情况下,它会为每个工厂制作的项目实例创建不同的随机日期.
发布日期不能为空,因为validates :release_date, presence: true我的项目模型中有.理想情况下,我有一个验证,确保提供的任何日期是一个日期,但也接受NIL,因为我不会总是有可用的日期.
任何帮助非常感谢.我在网上找不到关于工厂女孩和约会的具体信息.
模型
class Item < ActiveRecord::Base
validates :name, presence: true, length: { maximum: 50 }
validates :release_date, presence: true
Run Code Online (Sandbox Code Playgroud)
结束
Item_pages_spec.rb
require 'spec_helper'
describe "Item pages" do
subject { page }
describe "Item page" do
let(:item) { FactoryGirl.create(:item) }
before { visit item_path(item) }
it { should have_content(item.name) }
it { should have_title(item.name) }
end …Run Code Online (Sandbox Code Playgroud) 上周我在我的rails应用程序中添加了Facebook和Twitter共享按钮.我认为它们工作正常,但似乎它们没有可靠加载,需要刷新才能让它们显示出来.我认为这是一个涡轮机问题,因为这些事情经常是这样我安装了'jquery-turbolinks'gem.这不是一个涡轮问题.
环顾四周后,我发现喜欢回答这样一个并同时加入 twttr.widgets.load();到我的Twitter功能年底解决了这个问题,我已经没有运气获得 FB.XFBML.parse();,使Facebook的分享按钮无刷新加载.在这个 Facebook开发页面上,它没有列出共享按钮作为可以用该代码修复的事情之一.
我的代码部分如下:
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')); FB.XFBML.parse();</script>
<div class="share-buttons">
<div id="fb-root"></div>
<div class="fb-share-button" data-href="#{request.original_url}" data-width="110"></div>
</div>
Run Code Online (Sandbox Code Playgroud) javascript facebook ruby-on-rails facebook-sharer ruby-on-rails-4
我之前发布了一个关于此的问题,并被建议阅读大量相关信息.我已阅读并尝试实施约30种不同的解决方案.这些都不适合我.
这就是我所拥有的.
我有一个Miniatures模型.我有制造商型号.Miniatures有许多制造商通过Productions模型.
这些关联似乎设置正确,因为我可以在我的视图中显示它们并通过控制台创建它们.我遇到问题的方法是让Miniatures NEW和EDIT视图创建并更新到Productions表.
在控制台中的命令 @miniature.productions.create(manufacturer_id: 1)有效,这使我相信我应该能够在表单中执行相同的操作.
我认为我的问题总是在Miniatures Controller中,特别是CREATE函数.我在那里尝试了很多其他人的解决方案,没有人能做到这一点.我的field_for形式的东西也可能是错误的,但这似乎不那么繁琐.
我已经坚持了几天,虽然还有其他我可以继续工作的事情,如果这种关联不可能,那么我需要重新考虑我的整个应用程序.
表单现在在Productions表中创建一行,但不包括所有重要的manufacturer_id.
任何帮助非常感谢.
我的新微缩形式
<% provide(:title, 'Add miniature') %>
<h1>Add a miniature</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(@miniature) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.fields_for :production do |production_fields| %>
<%= production_fields.label :manufacturer_id, "Manufacturer" %>
<%= production_fields.select :manufacturer_id, options_from_collection_for_select(Manufacturer.all, :id, :name) %>
<% end %>
<%= f.label :release_date %>
<%= f.date_select :release_date, :start_year => Date.current.year, :end_year => …Run Code Online (Sandbox Code Playgroud) 我在我的Rails 4应用程序中使用paper_trail gem,我想设置一个默认的排序顺序.papertrail没有模型,只有控制器和初始化器.
我在哪里可以买到它?我必须为它创建一个模型吗?
default_scope order('created_at DESC')
Run Code Online (Sandbox Code Playgroud) 是否可以将字符串转换为哈希值,以便可以像哈希一样迭代?
"---
!ruby/hash:ActiveSupport::HashWithIndifferentAccess\ndescription:\n-
Original text blah blah.\n- New text blah blah.\nupdated_at:\n- 2014-05-12 09:18:21.000000000 Z\n-
2014-05-12 09:19:33.748593000 Z\n"
Run Code Online (Sandbox Code Playgroud)
我正在使用paper_trail宝石并尝试对非相邻版本进行差异化.这使我无法使用内置"changeset"哈希,这就是我想要的.
使用许多正则表达式,我可以处理这些字符串,但我想把它们变成哈希,"description"把它作为一个键,接下来的两个项目就是value.first和value.last.
该字符串被调用<%= version.object_changes %>.我怎么能把它称为哈希?
仍然坚持/sf/ask/1340967141/但现在尝试不同的方法.我只是想让相关模型正确显示.
我应该提到这是一个很好的关系.微缩模型有许多制造商通过生产.
这就是我的Miniature显示器试图显示的内容.三个对象来自它自己的模型,一个来自制造商模型.
<%= @miniature.name %><br />
Material: <%= @miniature.material %><br />
Manufacturer: <%= @miniature.manufacturers.select(:name).to_a %><br />
Release date: <%= @miniature.release_date.strftime("%d %b %Y") unless @miniature.release_date.blank? %><br />
<%= link_to "Edit this miniature listing", edit_miniature_path %>
Run Code Online (Sandbox Code Playgroud)
它显示的是什么
Miniature 1
Material: China
Manufacturer: [#<Manufacturer id: nil, name: "Cytt">, #<Manufacturer id: nil, name: "Yenn">]
Release date: 02 Mar 2002 Edit this miniature listing
Run Code Online (Sandbox Code Playgroud)
我怎样才能改写<%= @miniature.manufacturers.select(:name).to_a %>它只返回两个名字而不是它们周围的所有垃圾?
至少它证明我的协会正在工作,即使我不能通过嵌套表单创建它们.
我已经为我的@miniature模型工作了新的/创建动作和表单,它是嵌套模型@scales.我无法正确进行更新/编辑操作.应该很简单,但我很困难.
@miniaturehas_many @scales通过@sizes.
在我的@miniature模型中,我有
has_many :sizes, dependent: :destroy
has_many :scales, :through => :sizes
accepts_nested_attributes_for :sizes, allow_destroy: true
Run Code Online (Sandbox Code Playgroud)
在控制器中我有
def new
@miniature = Miniature.new
@all_scales = Scale.all
@size = @miniature.sizes.build
end
def create
@miniature = Miniature.new(miniature_params)
params[:scales][:id].each do |scale|
if !scale.empty?
@miniature.sizes.build(:scale_id => scale)
end
end
if @miniature.save
redirect_to miniature
else
render 'new'
end
end
private
def miniature_params
params.require(:miniature).permit(:name, :release_date, :material, :pcode, :notes, sizes_attributes: [:id, :scale_id, :miniset_id])
end
Run Code Online (Sandbox Code Playgroud)
这有效但编辑和更新操作却没有.我的编辑设置与我的编辑相同.
def edit …Run Code Online (Sandbox Code Playgroud)