`
hideto
  • 浏览: 2679068 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Rails宝典之第十六式: 虚拟属性

    博客分类:
  • Ruby
阅读更多
看一个场景,用户注册时需要填写First Name,Last Name,Password:
<h1>Register</h1>
<% form_for :user, :url => users_path do |f| %>
  <p>
    First Name<br/>
    <%= f.text_field :first_name %>
  </p>
  <p>
    Last Name<br/>
    <%= f.text_field :last_name %>
  </p>
  <p>
    Password<br/>
    <%= f.password_field :password %>
  </p>
  <p>
    <%= submit_tag 'Register' %>
  </p>
<% end %>

我们可以使用虚拟属性来简化:
<h1>Register</h1>
<% form_for :user, :url => users_path do |f| %>
  <p>
    Full Name<br/>
    <%= f.text_field :full_name %>
  </p>
  <p>
    Password<br/>
    <%= f.password_field :password %>
  </p>
  <p>
    <%= submit_tag 'Register' %>
  </p>
<% end %>

这样,我们输入Full Name而不是分别输入first_name和last_name,我们需要修改User类:
class User < ActiveRecord::Base
  def full_name
    [first_name, last_name].join(' ')
  end

  def full_name=(name)
    split = name.split(' ', 2)
    self.first_name = split.first
    self.last_name = split.last
  end
end

通过虚拟一个full_name属性来简化工作,当然,这需要确保用户输入的full_name中有空格:
def validate
  validate.errors.add(:full_name, 'must have a space') unless full_name.include? ' '
end
分享到:
评论

相关推荐

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它成为构建现代API的理想选择之一。 ### 一、什么是RESTful API REST(Representational State Transfer)是一种软件架构风格,用于定义...

    Rails中应用Ext.tree:以中国的省市地区三级联动选择为例

    在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种...通过学习这个实例,开发者可以掌握如何在Rails应用中集成第三方库,处理层级数据,以及创建交互式的前端界面。这对于提升Web应用的用户体验非常有价值。

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

    rails-dummy:为测试和Rails引擎生成虚拟的Rails应用程序

    Rails ::虚拟 使用RSpec或Test :: Unit为引擎生成虚拟应用程序的简单任务。 安装 将此行添加到您的应用程序的Gemfile中: gem 'rails-dummy' 然后执行: $ bundle 或自己安装为: $ gem install rails-dummy ...

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成.zip

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。 有关详细信息,请参阅 #90. web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中...

    Ruby-on-Rails-3.rar_site:www.pudn.com

    该资源的核心内容是《Web开发敏捷之道 - 应用Rails进行敏捷Web开发 - 第三版》这本书的PDF版本。这本书详细介绍了使用Ruby on Rails框架进行敏捷Web开发的相关知识。 Ruby on Rails(简称Rails)是一种基于Ruby编程...

    [Rails] Crafting Rails Applications (英文版)

    [Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...

    Rails 101S

    ### Rails 101S: 初学者必备的Ruby on Rails 宝典 #### Introduction: 深入了解Ruby on Rails 《Rails 101S》是一本为Ruby on Rails初学者准备的手册,旨在帮助新手快速入门并掌握基本的开发技能。本手册将从最...

    Rails相关电子书汇总

    11. **Rails Console**:提供了一个交互式的Ruby环境,便于开发者调试和实验代码。 12. **Rails API模式**:Rails 4引入了API模式,使得构建RESTful JSON接口变得更加简单。 13. **Webpacker和Webpack**:Rails ...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    #### 六、添加第二个路由 - **配置**:在`config/routes.rb`文件中添加新的路由规则,例如`get 'new_route' =&gt; 'controller#action'`。 - **效果**:这将在应用中增加一个新的URL路径,指向指定控制器的动作。 ###...

    Rails 101 入门电子书

    - 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器和视图。 - 在浏览器中查看结果。 #### 六、Rails的路由 - **概念介绍**: 路由是连接用户请求URL与应用...

    Ruby on Rails入门经典代码

    - Rails Console:交互式的命令行环境,用于调试和测试代码。 - Rails Server:启动本地开发服务器。 7. **Rails最佳实践**: - RESTful设计:遵循HTTP动词(GET, POST, PUT, DELETE)来设计API。 - Convention...

    Advanced Rails

    **高级Rails** Rails,全称为Ruby on Rails,是一款基于Ruby编程语言的开源Web应用程序框架,以其MVC(模型-视图-控制器)架构模式而闻名。"Advanced Rails" 涵盖了Rails开发中的高级主题和技术,是Ruby on Rails...

    rails有用的命令

    - `$ rails c` 或 `$ rails console`:启动Rails控制台,进行交互式编程。 - `$ rails server -p 3001`:在端口3001启动服务器。 - `$ rake doc:rails`:生成Rails API文档。 - `$ rails dbconsole`:打开数据库...

    Ruby+on+Rails快速Web应用开发实战.pdf

    Rails在2005年发布第一个稳定版本1.0.0。 - **Rails的版本迭代**:文档中提到的v1.0.0是Rails早期的一个版本,而Rails 2.3.2和Rails 2.5是后续更迭的版本。 - **Rails的主要特性**:Rails采用了约定优于配置...

    sprockets-rails:Sprockets Rails集成

    提供用于Rails 4.x(及更高版本)资产管道的Sprockets实现。 安装 gem 'sprockets-rails' , :require =&gt; 'sprockets/railtie' 或者,如果禁用了Bundler自动请求功能,则在config/application.rb require 'sprockets...

Global site tag (gtag.js) - Google Analytics