使用Rails,我使用form_for标记创建表单.

Rails会自动生成HTML表单,包括用于防止跨站点请求伪造(CSRF)的Authentity_令牌.

对于React,我使用JSX,因此无法在React组件中呈现erb.

在React组件中,我手动编写HTML.

我想在我的Rails应用程序中使用React,但仍然拥有Rails的优势.

Or,如果在我的应用程序中使用React as V时,无法获得form_的Rails优势,我如何才能编写一个合适的表单作为React组件?

如果我先编写表单,然后查看呈现的HTML,复制并粘贴到React组件中,这是个好主意吗?

例如,这里是从表单_呈现的HTML,用于:

<form class="new_user" id="new_user" action="/users" accept-charset="UTF-8" method="post">
  <input name="utf8" type="hidden" value="&#x2713;" /><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>

推荐答案

你可以将authenticity_token个粘贴到react 组件中.

使用gem react-rails

= react_component 'Form', authenticity_token: form_authenticity_token

form_authenticity_token是rails助手.

所以你可以把它粘贴到你的表格里.

<form role='form' accept-charset="UTF-8" action='/action' method='post'>
  ...
  <input type='hidden' name='authenticity_token' value={this.props.authenticity_token} />
  ...
</form>

这不是最好的解决方案.如果有人能给出更好的解决方案,我会很高兴.

Reactjs相关问答推荐

删除表2的收件箱未按预期工作

如何等待我的插入内容提交后再继续执行指令?

包装组件可以避免子组件重新渲染.?

如何使用皮金贴图在Reactjs中制作 map 上的点之间的线的动画?

错误:无法获取 RSC 负载.返回浏览器导航

如何在 React Hook Form 中使用嵌套对象处理错误验证消息

是的验证:使用 useFieldArray 访问表单值

CORS策略:对预检请求的响应未通过访问控制判断:没有Access-Control-Allow-Origin

单击按钮时如何添加或删除 3d 对象

useEffect 渲染没有依赖数组的组件

在 React 的父级中多次调用子级时从子级获取数据到父级

如何使用 React Hook Form 将寄存器作为 props 发送到子组件来收集数据?

Select 建议后如何关闭 vscode 添加自动完成={}

react-markdown 不渲染 Markdown

如何修复 Next.js 13 中类型 AppRouterInstance 上不存在 x?

如何在 React 中的 Material Ui 多选中设置默认值?

为什么重新渲染不会影响 setTimeout 的计数?

如何跟踪 dexie UseLiveQuery 是否完成

如何防止 mui x-date-picker 被截断?

链接的音译 Gatsby JS