unpoly-rails

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Unpoly Rails

Unpoly Rails

The
unpoly-rails
gem integrates Unpoly's server protocol into Rails, exposing helper methods in controllers, views, and helpers.
Gem:
unpoly-rails
— tracks Unpoly 3.x
unpoly-rails
gem 将Unpoly的服务器协议集成到Rails中,在控制器、视图和助手类中暴露辅助方法。
Gem:
unpoly-rails
— 适配Unpoly 3.x版本

Installation

安装

ruby
undefined
ruby
undefined

Gemfile

Gemfile

gem 'unpoly-rails'
undefined
gem 'unpoly-rails'
undefined

Frontend assets via Asset Pipeline

通过Asset Pipeline引入前端资源

js
// application.js
//= require unpoly
css
/* application.css
 *= require unpoly
 */
js
// application.js
//= require unpoly
css
/* application.css
 *= require unpoly
 */

Frontend assets via npm (esbuild, Webpacker, etc.)

通过npm引入前端资源(esbuild、Webpacker等)

js
import 'unpoly/unpoly.js'
import 'unpoly/unpoly.css'
js
import 'unpoly/unpoly.js'
import 'unpoly/unpoly.css'

Quick reference

快速参考

HelperPurpose
up?
Is this an Unpoly fragment request?
up.target
CSS selector being updated (success)
up.target = 'body'
Override the render target
up.target?('.sel')
Is this selector targeted?
up.fail_target
CSS selector targeted for failed responses
up.any_target?('.sel')
Is selector targeted for success or failure?
up.validate?
Is this a form validation request?
up.validate_names
Field names that triggered validation
up.layer.mode
Layer mode:
"root"
,
"modal"
,
"drawer"
, etc.
up.layer.overlay?
Is the targeted layer an overlay?
up.layer.root?
Is the targeted layer the root layer?
up.layer.accept(value)
Accept the current overlay
up.layer.dismiss(value)
Dismiss the current overlay
up.layer.open(...)
Request frontend to open a new overlay
up.layer.context
Layer context hash
up.context
Alias for
up.layer.context
up.emit(type, props)
Emit event on
document
after update
up.layer.emit(type, props)
Emit event on the targeted layer
up.cache.expire
Expire the client-side cache
up.cache.evict
Evict entries from the client-side cache
up.title = 'Title'
Set document title from server
up.safe_callback("js()")
CSP-safe inline callback with nonce
up.render_nothing
Render empty 204 response
up.no_vary { }
Read Unpoly headers without setting Vary
助手方法用途
up?
判断是否为Unpoly片段请求?
up.target
待更新的CSS选择器(成功响应时)
up.target = 'body'
覆盖渲染目标
up.target?('.sel')
该选择器是否为目标?
up.fail_target
失败响应时的目标CSS选择器
up.any_target?('.sel')
该选择器是否为成功或失败响应的目标?
up.validate?
是否为表单验证请求?
up.validate_names
触发验证的字段名称
up.layer.mode
层级模式:
"root"
,
"modal"
,
"drawer"
up.layer.overlay?
目标层级是否为浮层?
up.layer.root?
目标层级是否为根层级?
up.layer.accept(value)
确认当前浮层
up.layer.dismiss(value)
关闭当前浮层
up.layer.open(...)
请求前端打开新的浮层
up.layer.context
层级上下文哈希
up.context
up.layer.context
的别名
up.emit(type, props)
更新后在
document
上触发事件
up.layer.emit(type, props)
在目标层级上触发事件
up.cache.expire
过期客户端缓存
up.cache.evict
从客户端缓存中移除条目
up.title = 'Title'
从服务器端设置文档标题
up.safe_callback("js()")
带随机数的CSP安全内联回调
up.render_nothing
渲染空的204响应
up.no_vary { }
读取Unpoly请求头而不设置Vary头

Reference files

参考文档

Load when the user's question covers that topic:
  • server-helpers.md — Full API reference: request inspection, response control, layer API, validation, events, cache control, context, CSP callbacks, failed forms, Vary headers, conditional GETs, common Rails patterns
  • rails-integration.md — View helper syntax (
    link_to
    ,
    form_with
    ,
    button_to
    , field helpers), Turbo coexistence (disabling Turbo Drive in Rails 7+), CSP setup with
    csp_meta_tag
    , global follow-all config
  • patterns.md — End-to-end Rails patterns: drawer overlay helper, event-driven subinteractions (
    up-accept-event
    /
    up-dismiss-event
    ), create related record inline + validate parent form, authorization overlay vs root layer
当用户的问题涉及以下主题时加载:
  • server-helpers.md — 完整API参考:请求检查、响应控制、层级API、验证、事件、缓存控制、上下文、CSP回调、失败表单、Vary头、条件GET、常见Rails模式
  • rails-integration.md — 视图助手语法(
    link_to
    ,
    form_with
    ,
    button_to
    , 字段助手)、与Turbo共存(在Rails 7+中禁用Turbo Drive)、使用
    csp_meta_tag
    配置CSP、全局follow-all配置
  • patterns.md — 端到端Rails模式:抽屉浮层助手、事件驱动的子交互(
    up-accept-event
    /
    up-dismiss-event
    )、内联创建关联记录+验证父表单、授权浮层 vs 根层级