在我的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) 在我的 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)
当我尝试附加扩展名不在白名单中的文件时。我收到“不能为空”错误消息。如果我删除存在验证,则白名单验证错误将正确显示。我真的希望显示文件扩展名错误消息,因为从技术上讲,它不是空白的,它只是有一个不正确的文件。
我在里面嵌套了一些图像的 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)
当我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) 我有容器应根据内容动态改变高度.对于给定行中的所有容器,无论每个容器中的内容如何,底部文本都应固定在底部.
.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)我的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,因为我会重复这个布局上的很多代码.
做这个的最好方式是什么?什么是铁轨方式?
我试图从基于搜索查询的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
在我的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')
,它应该给我拇指大小的网址.
我得到一个未定义的方法'版本'错误.这可能吗?
我正在使用 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) 我在 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 请求,我只会得到一个空白页面。
任何想法为什么 …
activerecord ×2
css ×2
flexbox ×2
html ×2
ruby ×2
carrierwave ×1
css3 ×1
devise ×1
validation ×1