小编Oss*_*sie的帖子

Rails单行if else语句

我试图在视图中写一条if if语句.

<%= collection.name ? collection.name : @miniature.name %>
Run Code Online (Sandbox Code Playgroud)

如果存在,我希望它放入collection.name,否则我希望它放入@minile.name

ruby-on-rails ruby-on-rails-4

16
推荐指数
2
解决办法
3万
查看次数

如何让工厂女孩创建约会?

更新 我试图让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)

rspec ruby-on-rails ruby-on-rails-4 factory-bot

8
推荐指数
2
解决办法
6605
查看次数

Facebook分享按钮直到刷新后才显示

上周我在我的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

8
推荐指数
1
解决办法
5756
查看次数

绝对坚持尝试使用has_many来创建rails形式的嵌套关联

我之前发布了一个关于此的问题,并被建议阅读大量相关信息.我已阅读并尝试实施约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)

ruby-on-rails fields-for ruby-on-rails-4

7
推荐指数
1
解决办法
1万
查看次数

带papertrail的默认排序版本

我在我的Rails 4应用程序中使用paper_trail gem,我想设置一个默认的排序顺序.papertrail没有模型,只有控制器和初始化器.

我在哪里可以买到它?我必须为它创建一个模型吗?

default_scope order('created_at DESC')
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails paper-trail-gem ruby-on-rails-4

2
推荐指数
2
解决办法
897
查看次数

散列的纸张跟踪字符串

是否可以将字符串转换为哈希值,以便可以像哈希一样迭代?

"---
!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.firstvalue.last.

该字符串被调用<%= version.object_changes %>.我怎么能把它称为哈希?

ruby hash ruby-on-rails paper-trail-gem

2
推荐指数
1
解决办法
1508
查看次数

如何在视图中显示关联模型的数据?

仍然坚持/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 %>它只返回两个名字而不是它们周围的所有垃圾?

至少它证明我的协会正在工作,即使我不能通过嵌套表单创建它们.

ruby ruby-on-rails

1
推荐指数
1
解决办法
411
查看次数

Rails编辑/更新操作不适用于嵌套项目

我已经为我的@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)

controller ruby-on-rails nested-attributes ruby-on-rails-4

1
推荐指数
1
解决办法
2174
查看次数