我正在尝试使用 React ( react-rails
gem) 来增强现有的 Rails 应用程序。
这个应用程序有一个使用以下代码构建的表单:
<%= form_for @article do |f| %>
<div class="form-group">
<%= f.label :title %>
<%= f.text_field :title %>
</div>
<div class="form-group">
<%= f.label :body %>
<%= f.text_area :body, size: "60x12" %>
</div>
<div class="form-group">
<label><%= f.checkbox :sets_expiration_date %> Sets expiration date</label>
<%= f.date_select :expiration_date, start_year: Date.today.year %>
</div>
<button type="submit" class="btn btn-default">Create</button>
<% end %>
我希望此表单具有以下功能:
- 当用户切换复选框时,该字段的三个下拉列表会
expiration_date
显示或隐藏。 - 当用户提交时,表单数据通过 Ajax 发送到服务器进行验证和持久化。
- 当验证失败时,相关标签和输入字段会被红色边框包围。
- 成功保存表单数据后,表单会消失并显示一条消息。
在我的第一次尝试中,我设法实现了这个目标,但我发现我必须编写很多普通的 HTML 代码。
这对我来说是一个失望。特别是,我不喜欢为每个标签指定name
and属性,例如.defaultValue
<input>
<input name="article[title]" defaultValue={this.props.object.title}>
expiration_date
我还必须编写相当长的 JavaScript 代码来为该字段创建三个下拉列表。
如何有效地使用 React 构建这样的表单?有什么好的插件吗?