rails Render和layout基础学习

render作用
生成HTTP response
渲染和解释子视图(sub-view)


render method

in controller

in view


render in controller
修改action的查找view的行为,组建当前request的response

def index
# ...
end

def search
@users = User.page(params[:page] || 1).per_page(params[:per_page] || 10)
.order("id desc").where(["username like ?", "%#{params[:username]}%"])
render action: :index

end

def search
# ...
render text: 'ok'
render json: @users
render xml: @users
render file: 'app/views/users/index'
render partial: 'app/views/users/search'
end

def search
# ...

if @user
render json: @user
return
end

render text: 'ok'
end

一个action只能执行一次render或者redirect_to

render in view
渲染子视图 sub-view
# app/views/users/index.html.erb

# app/views/shared/_menu.html.erb
<%= render "shared/menu" %>
<h1>Products</h1>
<p>Here are a few of our users:</p>
...

参数

<%= render "shared/menu" %>
<%= render partial: "shared/menu" %>

<%= render "shared/menu", locals: { var_1: 'value_1' } %>


遍历输出
<% @user.each do |user| %>
<%= render partial: "one_user", locals: {user: user} %>
<% end -%>


# or

<%= render "one_user", collection: @users, as: :user %>
render in view
sub-view能够访问当前view或者action的所有实例变量

Layouts
定义了view的父视图或者布局视图

# app/views/layouts/application.html.erb

<body>
...
<%= yield %>
...
</body>
# app/controllers/users_controller.rb
class UsersController < ApplicationController
layout 'application'

def index
# ...
end
end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值