小编use*_*963的帖子

Rails - 从嵌套验证错误消息中省略模型名称

在我的item模型中,我有一行has_many :user_items, validate: true来验证相关user_item模型item.验证错误消息如下所示:

>>  @item.errors
=> ... @messages={:name=>["can't be blank"],
                  :description=>["can't be blank"],
                  :"user_items.picture"=>["can't be blank"], 
                  :user_items=>["is invalid"]}>
>>  @item.errors.full_messages
=> ["Name can't be blank",
    "Description can't be blank", 
    "User items picture can't be blank",
    "User items is invalid"]
Run Code Online (Sandbox Code Playgroud)

_error_messages.html.erb

<% if target.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-danger">
      The form contains <%= pluralize(target.errors.count, "error") %>.
    </div>
    <ul>
    <% target.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
  </div> …
Run Code Online (Sandbox Code Playgroud)

validation activerecord ruby-on-rails

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

Carrierwave - 如果文件类型不在白名单上,则触发存在验证

在我的 Rails 4 应用程序中,我使用 Carrierwave 上传图像。

class UserItemImage < ActiveRecord::Base

  include PicturesHelper

  attr_accessor :foo

  mount_uploader :picture, PictureUploader
  belongs_to :user_item
  validate :picture_size
  validates :picture, presence: true

end
Run Code Online (Sandbox Code Playgroud)

我在我的中使用这个白名单picture_uploader.rb

  def extension_white_list
    %w(jpg jpeg png)
  end
Run Code Online (Sandbox Code Playgroud)

我的表格

  <%= simple_form_for :user_item_image, url: user_item_user_item_images_path(@user_item), multipart: true do |f| %>
    <%= f.input :picture, as: :file, label: false, input_html: {multiple: true, class: 'image-file'} %>
Run Code Online (Sandbox Code Playgroud)

当我尝试附加扩展名不在白名单中的文件时。我收到“不能为空”错误消息。如果我删除存在验证,则白名单验证错误将正确显示。我真的希望显示文件扩展名错误消息,因为从技术上讲,它不是空白的,它只是有一个不正确的文件。

ruby-on-rails carrierwave

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

IE 中的嵌套 flexbox 高度问题

我在里面嵌套了一些图像的 flexbox,它在 Chrome 中看起来不错,但是在 IE 中,您可以看到边界flex-item-wrapper与图像底部不齐平。顺便说一下,在布局中,我有时会有几个flex-row带有很多图片的。

.flex-list {
  display: flex;
  flex-direction: column;
}
.flex-row {
  display: flex;
}
.flex-item-wrapper {
  width: 100%;
  border: 1px solid green;
}
.flex-item {
  height: 100%;
  width: 100%;
  border: 1px solid blue;
}
.picture {
  width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex-list">
  <div class="flex-row">
    <div class="flex-item-wrapper">
      <div class="flex-item">
        <a href='#'>
          <img class="picture" src="http://www.picgifs.com/clip-art/cartoons/super-mario/clip-art-super-mario-832109.jpg" alt="">
        </a>
      </div>
    </div>
    <div class="flex-item-wrapper"></div>
    <div class="flex-item-wrapper"></div>
    <div class="flex-item-wrapper"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

html css flexbox

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

如何使用装置user_signed_in?集成测试中的方法?

当我assert user_signed_in?进行集成测试时,它说该方法未定义。有没有办法可以在测试中使用此方法?我正在使用Rails 4和最新版本的devise。这是我的测试文件:

require 'test_helper'

class UsersSignupTest < ActionDispatch::IntegrationTest

test "valid signup information" do
    get new_user_registration_path
    assert_difference 'User.count', 1 do
      post_via_redirect user_registration_path, 
                                     user: { first_name: "Example",
                                             last_name:  "User",
                                             email:      "user@example.org",
                                             password:              "password",
                                             password_confirmation: "password" }
    end
    assert_template 'activities/index'
    assert user_signed_in?
  end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise

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

在flexbox中对齐底部

我有容器应根据内容动态改变高度.对于给定行中的所有容器,无论每个容器中的内容如何,​​底部文本都应固定在底部.

.flex-list {
  display: flex;
  flex-direction: column;
}
.flex-list .flex-row {
  display: flex;
  margin-bottom: 20px;
}
.flex-list .flex-row .flex-item-wrapper {
  margin-right: 20px;
  width: 100%;
  background-color: yellow;
}
.flex-list .flex-row .flex-item-wrapper:last-child {
  margin-right: 0px;
  background-color: transparent;
}
.flex-list .flex-row .flex-item-wrapper .flex-item {
  width: 100%;
  height: 100%;
}
.flex-item-stats {
  display: flex;
  justify-content: space-between;
  color: grey;
  padding-top: 10px;
}
.flex-item-stats > * {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.caption {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
Run Code Online (Sandbox Code Playgroud)
<div class="profile-content flex-list"> …
Run Code Online (Sandbox Code Playgroud)

html css css3 flexbox

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

如何在rails布局中有条件地将类添加到<body>

我的application.html.erb文件看起来像这样

<!DOCTYPE html>
<html lang="en">
  <head>
  .
  .
  .
  </head>
  <body <%= "class=landing-bg" if !@landing.nil? %>>
    <%= render 'layouts/header' %>
    <div class="container">
    .
    .
    .
    </div>
    <%= render 'layouts/footer' %>
    <% if !@landing.nil? %>
      <div class="landing-gradient"></div>
    <% end %>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我遗漏了一大堆meta标签,<head>还有一堆与该问题无关的正文中的其他代码.

static_pages_controller

def home
  @landing = "landing"
end
Run Code Online (Sandbox Code Playgroud)

我需要<body>在我的主页上添加一个类和页脚下方的div.我觉得我在做什么有点hacky.而且,如果我为登陆页面创建了一个单独的布局,那么它就不会是DRY,因为我会重复这个布局上的很多代码.

做这个的最好方式是什么?什么是铁轨方式?

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

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

使用.select或.map从activerecord模型中获取名称数组

我试图从基于搜索查询的activerecord模型中获取一组名称.

我的项目模型中有这个方法.

def self.search(search)
    if search
      where(['lower(name) LIKE ?', "%#{search}%"])
    else
      Item.all
    end
  end
Run Code Online (Sandbox Code Playgroud)

我试图找出使用这两行之间的区别,他们都返回相同的东西.

Item.search('ex').select('name').map(&:name) VS Item.search('ex').map(&:name)

ruby activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

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

如何使用方法的字符串参数作为方法名称变量

在我的rails应用程序中,我使用了carrierwave图像.Carrierwave创建不同版本的图像的,并且可以这样获得的网址:picture.large.url,picture.small.url,picture.thumb.url,等.

我想创建一个方法,可以接受一个字符串参数,然后可以用于图像URL.像这样的东西:

def profile_url (version)
  picture.version.url
end
Run Code Online (Sandbox Code Playgroud)

那么我可以写@user.profile_url('thumb'),它应该给我拇指大小的网址.

我得到一个未定义的方法'版本'错误.这可能吗?

ruby ruby-on-rails

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

Rails 如何使用 in_groups_of 建立索引

我正在使用 in_groups_of 创建 3 行的视图中显示图片。但是,我需要对第一行的第一项做一些不同的事情。如何定位此项目?

<% images.in_groups_of(3) do |row| %>
  <div class="row">
    <% row.each_with_index do |image, index| %>
      <div class="item-wrapper">
        <% if image %>
          <a class="flex-item" <img class="photo" src="<%= image.picture.medium.url %>" alt="" /></a>
        <% end %>
      </div>
    <% end %>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

除了第一行中的第一张照片之外,我想在每个锚标记下方添加此代码。

<% if user.eql?(current_user) %>
  <button class="btn btn-xs btn-danger delete-image" data-id="<%= image.id %>">
    <i class="fa fa-trash-o fa-lg"></i>
  </button>            
<% end %>
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

Rails 500 错误显示 PUT 请求的空白页

我在 Rails 应用程序中设置了自定义错误页面。

应用程序.rb

config.exceptions_app = self.routes

路由文件

  get '404', to: 'application#page_not_found'
  get '422', to: 'application#server_error'
  get '500', to: 'application#server_error'
Run Code Online (Sandbox Code Playgroud)

应用控制器.rb

  def page_not_found
    respond_to do |format|
      format.html { render template: 'errors/not_found_error', layout: 'layouts/application', status: 404 }
      format.all  { render nothing: true, status: 404 }
    end
  end

  def server_error
    respond_to do |format|
      format.html { render template: 'errors/internal_server_error', layout: 'layouts/error', status: 500 }
      format.all  { render nothing: true, status: 500}
    end
  end 
Run Code Online (Sandbox Code Playgroud)

当我执行抛出错误的 GET 请求时,我的自定义 500 错误页面显示正常,但是当我提交触发 NoMethodError 的表单时,因此 PUT 请求,我只会得到一个空白页面。

任何想法为什么 …

ruby-on-rails

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