cas*_*ral 3 forms ruby-on-rails
我有一个包含 3 个表单的视图,即“日程表”、“锻炼”和“练习”,每个表单的行为都类似于编辑表单。所有视图中都有一个提交(保存)按钮。
当我点击保存按钮时。这些表单上更改的每个数据都应在单击后更新。
对此最好的解决方案是什么?Javascript 更新每个数据是分开的吗?怎么做 ?有没有更 Rails 的方法可以轻松做到这一点?
我的困难是如何将所有这些模型集成在一个视图中,而所有这些都发生在学生模型的显示(视图)中。
如果您正在实现类似profile/edit页面的内容(您可以在其中一次保存所有记录),我会考虑的两种方法是通过 Ajax 保存表单,或者使用单个提交方法来处理它们
阿贾克斯
ajax 方法是最传统的:
update您提交的每个表单都将转到后端表单自己的方法- 每个表单都可以通过一个按钮处理,但最好将它们分开
#app/controllers/profile_controller.rb
def edit
@schedules = Schedule.all #-> not sure how many records you're using
@workouts = Workout.all
@exercises = Exercise.all
end
#app/views/profile/edit.html.erb
<%= form_for @schedule do |f| %>
<%= f.text_field :test %>
<% end %>
# -> other forms
<%= button_to "Save", "#", id: "save" %>
#app/assets/javascripts/application.js
$("#save").on("click", function() {
$("form").submit(); // we'll have to define the form to submit
});
Run Code Online (Sandbox Code Playgroud)
单身的
如果您将所有表单作为一个提交,则必须将它们全部封装在一个表单中,因为会发送不同的错误。这可以通过使用_来实现,并通过循环不同的参数在后端处理,单独保存每个参数。
我会这样做:
#app/controllers/application_controller.rb
def submit
types = %w(schedules exercises workouts)
for type in types do
type.constantize.update_attributes()
end
end
Run Code Online (Sandbox Code Playgroud)
这允许您创建一个表单,其中在同一操作中提交不同的数据类型:
#app/views/profile/edit.html.erb
<%= form_tag profile_submit_path do %>
<%= fields_for @schedules do |f| %>
<%= f.text_field :title %>
<% end %>
# -> fields_for for the other objects
<% end %>
Run Code Online (Sandbox Code Playgroud)
这将允许您将更新的对象发送到您的控制器,允许它们提交
| 归档时间: |
|
| 查看次数: |
7369 次 |
| 最近记录: |