【发布时间】:2015-09-22 13:42:04
【问题描述】:
在 Rails 中,我使用 form_for 标签创建表单。
Rails 自动生成 HTML 表单,包括用于防止跨站请求伪造 (CSRF) 的安全性令牌。
在 React 中我使用 JSX,所以我无法在 React 组件中渲染 erb。
在 React 组件中,我手动编写 HTML。
我想在我的 Rails 应用程序中使用 React,并且仍然拥有 Rails 的优势。
或者,如果在我的应用程序中使用React作为V时无法获得form_for的Rails优势,我该如何编写一个合适的表单作为React组件?
如果我先编写 form_for,然后查看呈现的 HTML,将其复制并粘贴到我的 React 组件中,这是个好主意吗?
例如这里是从 form_for 渲染的 HTML:
<form class="new_user" id="new_user" action="/users" accept-charset="UTF-8" method="post">
<input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="1AXH9blzaH4qEAAWTvu6aAH84btA/9DZCpFDBhiJ0/H9uAKsPAB/rFQWY1VmWA1yNtFaigO50p6joa3X8CItBA==" />
<div class="field">
<label for="user_Имя">Имя</label><br>
<input placeholder="Бил Гейтс" type="text" name="user[name]" id="user_name" />
</div>
<div class="actions">
<input type="submit" name="commit" value="Открыть заявку" class="button tiny" />
</div>
</form>
【问题讨论】:
-
据我所知,您无法真正做到两全其美。如果您使用
form_for,您将获得 Rails 的所有优势,但 React 不会知道表单的 DOM,因此它无法完成它的工作。 -
最大的问题是:你想用 React 在你的表单中做什么?
-
你也许可以使用 LinkState React mixin。它允许您将表单输入绑定到组件的状态。从那里,您可以处理提交回 Rails(通过 API)。 facebook.github.io/react/docs/…
-
我们应该开发生成 jsx 组件的 rails 助手:form_for_jsx
标签: html ruby-on-rails reactjs