我有一个我想验证的字段.我希望该字段可以留空,但如果用户输入数据,我希望它以某种格式.目前我在模型中使用以下验证,但这不允许用户将其留空:
validates_length_of :foo, :maximum => 5
validates_length_of :foo, :minimum => 5
Run Code Online (Sandbox Code Playgroud)
我如何写这个来实现我的目标?
我使用以下内容允许我的用户在他们的个人资料中选择他们的性别.
<%= f.select (:sex, %w{ Male Female }) %>
Run Code Online (Sandbox Code Playgroud)
如果没有将任何内容传递给user.sex列,我将如何创建列表默认的空白值?我只是将男性或女性作为一个字符串传递.
目的是我想要一个空白值,所以验证可以确保他们知道他们必须选择它.
我刚刚安装了Paperclip的插件,我收到以下错误消息,但我不确定原因:
NoMethodError (undefined method `has_attached_file' for #<Class:0x10338acd0>):
/Users/bgadoci/.gem/ruby/1.8/gems/will_paginate-2.3.12/lib/will_paginate/finder.rb:170:in `method_missing'
app/models/post.rb:2
app/controllers/posts_controller.rb:50:in `show'
Run Code Online (Sandbox Code Playgroud)
它引用了will_paginate gem.从我能找到的,似乎我PostsController#index或者以前尝试安装gem而不是插件有问题,在这种情况下我读过我应该能够以/config/environments.rb某种方式通过文件来修复.
我之前认为以前的gem安装并不重要,因为我在安装插件之前删除了旧版本的网站.在该站点的当前版本中,我显示该表已在迁移后使用Paperclip列进行更新.这是我的代码:
PostsConroller#show:
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @post }
end
end
Run Code Online (Sandbox Code Playgroud)
Post 模型:
class Post < ActiveRecord::Base
has_attached_file :photo
validates_presence_of :body, :title
has_many :comments, :dependent => :destroy
has_many :tags, :dependent => :destroy
has_many :votes, :dependent => :destroy
belongs_to :user
after_create :self_vote
def self_vote
# I am assuming you have a …Run Code Online (Sandbox Code Playgroud) 我是新手,如果这很容易就很抱歉.我想知道上传图片并在Ruby on Rails中显示它们的最佳方法.我有一个博客,并希望在创建帖子时可以选择附加图片.
我创建了一个包含"note"列的新表.默认值是varchar(255)我相信但是我希望这个列是文本区域而不是字段并允许更多数据.我想我会在ActiveRecord :: Migration文件中进行此更改,但我对格式感到好奇.我只是将varchar(255)更改为varchar(1000)吗?(如果是这样的格式是什么?
def self.up
create_table :notes do |t|
t.string :note :varchar(1000)
end
Run Code Online (Sandbox Code Playgroud)
这是正确的格式吗?此外,如何将输入字段设置为多行.对不起,如果这很容易,但我是编程和RoR的新手.谢谢.
我在Ruby on Rails上构建的一个非常简单的博客应用程序的主页上显示最近的评论.我想限制从comments表的"body"列显示的字符数.我假设我可以在<%= h comment.body%>的代码末尾添加一些东西,但我不知道那将是什么,因为我是Ruby和Rails的新手.
这是我在/views/posts/index.html.erb文件中的代码:
<% Comment.find(:all, :order => 'created_at DESC', :limit => 5).each do |comment| -%>
<p>
<%=h comment.name %> commented on
<%= link_to h(comment.post.title), comment.post %><br/>
<%=h comment.body %>
<i> <%= time_ago_in_words(comment.created_at) %> ago</i>
</p>
<% end -%>
Run Code Online (Sandbox Code Playgroud) 我似乎无法找到这个,我觉得它应该很容易.在Ruby on Rails中,我该如何处理:
2010-06-14 19:01:00 UTC
Run Code Online (Sandbox Code Playgroud)
把它变成
June 14th, 2010
Run Code Online (Sandbox Code Playgroud)
我可以不只是在视图中使用帮助器吗?
我是新手,所以很容易.我开发了自己的博客并成功部署了它.整个应用程序都基于post_controller.我想知道如何将用户路径重新路由到默认的post_controller与app控制器.
为了说明,如果你去http://mylifebattlecry.heroku.com,你会看到默认的rails页面.如果你去http://mylifebattlecry.heroku.com/posts,你会看到该应用程序.完成此操作后,我将更改我的http://www.mylifebattlecry.com域名以映射到Heroku,但需要知道如何将/ posts发送到访问者的位置.
因为我总是打字,所以我对轨道和编程很新,所以很容易.提前致谢.
我已成功地遵循Ryan Bates的初始教程,了解如何在15分钟内构建博客.如果您不知道本教程将指导您创建帖子并允许对这些帖子发表评论.它甚至通过在帖子show.html.erb页面上创建和显示评论来介绍AJAX.一切都很棒.
这是打嗝,当Ryan带你通过本教程时他会清除comments_controller并只显示创建注释的代码.我试图添加编辑和销毁评论的能力.似乎无法让它工作,不断删除实际的帖子而不是评论(日志显示我一直向PostsController发送DELETE请求).这是我的代码:
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create!(params[:comment])
respond_to do |format|
format.html { redirect_to @post }
format.js
end
end
def destroy
@comment = Comment.find(params[:id])
@comment.destroy
respond_to do |format|
format.html { redirect_to(posts_url) }
format.xml { head :ok }
end
end
end
Run Code Online (Sandbox Code Playgroud)
/views/posts/show.html.erb
<%= render :partial => @post %>
<p>
<%= link_to 'Edit', edit_post_path (@post) %> |
<%= link_to 'Destroy', @post, :method => :delete, :confirm => "Are you sure?" %> |
<%= …Run Code Online (Sandbox Code Playgroud) 我已经在rails上构建了一个带ruby的博客应用程序,我正在尝试实现搜索功能.博客应用程序允许用户标记帖子.标签是在自己的表格中创建的belong_to :post.创建标记时,标记表中的记录也是如此,其中标记的名称为tag_name并由post_id关联.标签是字符串.
我试图允许用户以任何顺序搜索任何单词tag_name.这就是我的意思.让我们说一个特定的帖子有一个标签是'红宝石代码控制器'.在我当前的搜索功能中,如果用户搜索"ruby","ruby code"或"ruby code controller",则会找到该标记.如果用户键入'ruby controller',则无法找到.
基本上我所说的是我希望在搜索中输入的每个单词都被搜索,而不一定是输入到搜索中的"字符串".
我一直在尝试提供多个文本字段以允许用户输入多个单词,并且还在使用下面的代码,但似乎无法完成上述操作.我是ruby和rails的新手很抱歉,如果这是一个明显的问题,在安装gem或插件之前,我想我会检查是否有一个简单的修复.这是我的代码:
查看:/views/tags/index.html.erb
<% form_tag tags_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search], :class => "textfield-search" %>
<%= submit_tag "Search", :name => nil, :class => "search-button" %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
TagsController
def index
@tags = Tag.search(params[:search]).paginate :page => params[:page], :per_page => 5
@tagsearch = Tag.search(params[:search])
@tag_counts = Tag.count(:group => :tag_name,
:order => 'count_all DESC', :limit => 100)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml …Run Code Online (Sandbox Code Playgroud) ruby-on-rails ×10
ruby ×9
blogs ×2
activerecord ×1
file-upload ×1
indexing ×1
migration ×1
model ×1
paperclip ×1
routing ×1
search ×1
select ×1
validation ×1