-1

我认为这很简单,但在任何地方都找不到关于如何做到这一点的解释。

我有一个配置文件页面,该页面有一个表单,提交时应该通过CompletedSetsController但我不知道如何告诉 form_for 我想通过已经编写的创建/更新,而不是在 ProfilesControllerCompletedSetsController中重写 CRUDCompletedSets

CompletedSetsController的是脚手架生成的 CRUD 控制器。

这是我的表格:

现在,这个表单只有在我放入@completed_set = CompletedSet.new.时才有效ProfileController,但这不是很干燥,特别是如果我必须重写 ProfilesController 中的创建和更新方法。

<%= form_for(@completed_set) do |f| %>
        <tr>
            <td><%= we.exercise.name %>
                <%= f.hidden_field :exercise_id, :value => we.exercise.id %>
                <%= f.hidden_field :user_id, :value => current_user.id %>
                <%= f.hidden_field :program_id, :value => @user_program.id %>
                <%= f.hidden_field :group_id, :value => @user_group.id %>
                <%= f.hidden_field :workout_id, :value => @workout.id %>
            </td>
            <td><%= we.set %></td>
            <td><%= f.number_field :repetitions, :value => we.repetitions %></td>
            <td><%= if we.exercise.try(:is_cardio) == false then f.text_field :weight end %></td> <!-- :value => value of previous time user did this exercise -->
            <td><%= if we.rest.to_i >= 60 then  pluralize(we.rest.to_f / 60, 'minute') else pluralize(we.rest.to_i, 'second') end %></td>
            <td><%= if we.exercise.try(:is_cardio) == true then pluralize(we.time, 'minute') end %></td>
            <!-- <td><%#= if we.exercise.try(:is_cardio) == true then f.number_field :rpe, :value => we.rpe end %></td> Forgot to put this in table --> 
            <td><%= link_to 'Remove', workout_workout_exercise_path(@workout, we), method: :delete %></td>
            <td><%= f.submit %></td>
        </tr>
        <% end %>

编辑:

更具体地说,我的个人资料页面是我的 UsersController 中的半静态页面,UsersController非常基本:

class UsersController < ApplicationController

  def profile
      # @completed_set = CompletedSet.new
  end

  def settings
  end

end

我所有的控制器逻辑都在CompletedSetsController其中,我试图避免复制到 UsersController

4

2 回答 2

1

您可以指定一个url选项,form_for该选项将决定表单提交到的位置:

<%= form_for @completed_set, url: completed_sets_path do |f| %>
于 2013-05-10T14:25:04.670 回答
0

查看 FormHelper 上的可用选项,尤其是form_for的选项。如果默认值不适合您的情况,您可以指定任何您想要的 url。

于 2013-05-10T14:26:33.057 回答