`

rails render partial 参数 变量说明

阅读更多
这里的conventions总是容易记不清楚 就是locals collection object


1. 默认参数

<%= render :partial => "account" %>

默认本地有个变量@account, 传递过去,render到的partial(_account.erb)有个变量account

2. 单独参数 locals
locals传递一组hash参数hash 值是本地的变量,hash的key是partial里的变量

<%= render :partial => "account", :locals => { :account => @buyer } %>

<% for ad in @advertisements %>
  <%= render :partial => "ad", :locals => { :ad => ad } %>
<% end %> 

上面两个render分别
传递本地变量@buyer到_account.erb里叫account的参数
传递本地变量ad到_ad.erb里叫ad

3

根据1默认参数下面两个是一样的

<%= render :partial => "contract", :locals => { :contract  => @contract } %>

<%= render :partial => "contract" %>



4. as使用

用来改变传递之后,partial里变量的名称,如下,render方式是一样的。

<%= render :partial => "contract", :as => :agreement

<%= render :partial => "contract", :locals => { :agreement => @contract }

传递@contract到_contract.erb里,partial里的变量名为agreement

5. object使用

object最简单,就是把一个变量原名传递到partial里,
所以什么都记不清楚的时候,就用object多写点都能表达


如下:
<%= render :partial => "account", :object => @buyer %>

<% for ad in @advertisements %>
  <%= render :partial => "ad", :object => ad %>
<% end %>

传递@buyer到_account.erb的partial里变量名还是@buyer
传递ad到_ad.erb的partial里变量名还是ad

6 object和as合用

<%= render :partial => "contract", :object => @contract, :as => :contract %>

<%= render :partial => "contract" %>


7 collection

<%= render :partial => "ad", :collection => @advertisements %>


@advertisements是一个array,partial里_ad.erb有个ad变量是@advertisements的成员。就是_ad.erb不用写loop只是一条广告显示。

<%= render :partial => "ad", :collection => @advertisements, :spacer_template => "ad_divider" %>

同上,循环显示_ad.erb _ad_divider.erb 显示@advertisements.size次其中partial_ad_counter是默认计数器表示第几条广告

8 默认


看你要partial的变量是一组记录还是一条记录,会对应约定用locals和collection
#@account是一条记录
# <%= render :partial => "accounts/account", :locals => { :account => @account} %>
<%= render :partial => @account %>

# @posts是一组记录
# <%= render :partial => "posts/post", :collection => @posts %>
<%= render :partial => @posts %>

这是很人性的约定,可有时候就是忘了

9 一些漂亮的简写

#<%= render :partial => "account" %>可用下面代替
<%= render "account" %>

#<%= render :partial => "account", :locals => { :account => @buyer } %>可用下面代替
<%= render "account", :account => @buyer %>

# @account是一条记录
# <%= render :partial => "accounts/account", :locals => { :account => @account } %>可用下面代替
<%= render(@account) %>

# @posts是一组记录
# <%= render :partial => "posts/post", :collection => @posts %>可用下面代替
<%= render(@posts) %>


10 layout

<%# app/views/users/index.html.erb &>
Here's the administrator:
<%= render :partial => "user", :layout => "administrator", :locals => { :user => administrator } %>

Here's the editor:
<%= render :partial => "user", :layout => "editor", :locals => { :user => editor } %>

<%# app/views/users/_user.html.erb &>
Name: <%= user.name %>

<%# app/views/users/_administrator.html.erb &>
<div id="administrator">
  Budget: $<%= user.budget %>
  <%= yield %>
</div>

<%# app/views/users/_editor.html.erb &>
<div id="editor">
  Deadline: <%= user.deadline %>
  <%= yield %>
</div>



参考文档:
http://apidock.com/rails/ActionController/Base/render
http://johnnyhg.iteye.com/blog/499182
http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to
2
1
分享到:
评论

相关推荐

    Ruby的render_partial技术详解

    整理后的在Ruby on rails的Haml有关render_partial的用法,本资源为一张图

    11. Render 部分partial与使用上的实例

    [Ruby_on_Rails][中文][Rails_5.x]__11._Render_部分partial與使用上的實例

    rails_param:Rails的参数验证和类型强制

    rails_param Rails的参数验证和类型强制介绍如果您想直接在控制器内部验证一些参数,该库非常方便。 例如:您正在构建搜索动作,并且想要验证是否已设置sort参数,并且仅将其设置为desc或asc类的东西。重要的该库不...

    Ruby for Rails

    所采用的Rails应用示例,既说明了Ruby的特性,也给出了有关Rails的重要信息。第四部分讲述了如何应用第二部分和第三部分的Ruby知识来开发Rails应用。 本书适合于Ruby的初学者,也适合于想要进一步提高Ruby编程...

    client_variable:在JavaScript中使用Rails变量

    将您的rails变量导出到客户端 安装 将此行添加到您的应用程序的Gemfile中: gem 'client_variable' 安装并将其添加到Gemfile后,需要运行生成器: rails g client_variable:install 它将在配置文件夹中创建client_...

    ruby1.8.6 + rails2.0.2 安装配置 详细说明

    ruby1.8.6 + rails2.0.2 + radrails0.7.2 + mysql 安装配置 详细说明

    [Rails] Crafting Rails Applications (英文版)

    ☆ 资源说明:☆ [Pragmatic Bookshelf] Crafting Rails Applications (英文版) [Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆...

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    Rails之道,完整扫描版

    《Rails之道》按照Rails的各个子系统进行组织编排,分别... 《Rails之道》详细讨论了Rails的程序代码并通过分析Rails中的代码片段来深入解释它的功能,同时,《Rails之道》部分章节也摘录了一些API文档中的内容...

    turbolinks_render:在Rails控制器中通过Turbolink支持`render`

    turbolinks_render 在Rails控制器中使用render并通过Turbolinks处理响应。 Turbolinks开箱即用地支持 。 但是不支持render ,您必须使用。 该宝石旨在解决该问题。 我认为Turbolinks / Rails应该正式处理此问题。 ...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...

    Rails项目源代码

    一个用Ruby on Rails搭建的图片分享的网站项目.完整源代码

    rails敏捷开发的购物车系统

    本资源是参照rails敏捷开发第四版书中的例子,rails的版本是rails3.2.6

    Bootstrap for Rails (2015)

    Bootstrap 3 和 Rails 4(样例用的是Ruby 2.1.1,Rails 4.1.4) Table of Contents Preface 1 Chapter 1: Introducing Web Application Development in Rails 7 Why Bootstrap with Rails? 8 Setting up a Todo ...

    rails:Render的Rails 5入门项目

    自述文件这是一个示例Rails 5.2应用程序,您可以将其用作上自己的Rails项目的起点。 该示例应用程序部署在。部署方式请按照位于的指南进行操作。

    adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成.zip

    adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成 AdminLTE Rails gem AdminLTE 是后端的高级 Bootstrap 主题。英镑 AdminLTE Rails gem 与 Rails 资产管道集成了英镑AdminLTE主题。安装将...

    Rails101_by_rails4.0

    中文世界唯一一本Rails 4.0.0 + Ruby 2.0.0 的自學書籍

Global site tag (gtag.js) - Google Analytics