如何干两种略有不同的形式?

时间:2015-08-27 15:07:49

标签: forms ruby-on-rails-4 dry

我知道部分导轨,但似乎我只能使用部分重复使用完全相同的形式。

如果我有两种形式只在一个字段中有所不同怎么办?例如,在我的课堂应用程序中,我有一个用于同学评分的表单和一个用于教师评分的表单。

老师的表格如下。对等分级表单完全相同,减去grade字段。我该如何干这个?

<%= form_for @doc, 
          url: student_homework_document_path(student_id: @doc.submitter_id,
                                               id: @doc.id),
          html: { multipart: true } do |f| %>
      <%= render 'shared/error_messages', object: f.object %>

      <%= f.label :grade %>
      <%= f.number_field :grade %>

      <%= f.label :graded_file %>
      <%= f.file_field :graded_file %>

      <%= f.label :graded_file_source_code %>
      <%= f.file_field :graded_file_source_code %>

      <%= f.submit "Submit grading", class: "btn btn-large" %>
    <% end %>

1 个答案:

答案 0 :(得分:1)

我原本以为你有一个叫做老师的控制器,一个叫做同伴或者什么的控制器。您可以保持表单相同,但是为对等分级方法添加变量,例如@peer_grader = true。然后在您的表单中添加:

<% if @peer_grader = true %>
  <%= f.label :grade %>
  <%= f.number_field :grade %>
<% end %>

您还需要在两个设置为正确路径的控制器中设置另一个名为@url的变量,然后将表单更新为:

<%= form_for @doc, url: @url, html: { multipart: true } do |f| %>