我认为这很简单,但无法在任何地方找到解释。
我有一个配置文件页面,其中包含一个表单,提交时应该通过CompletedSetsController
,但我无法弄清楚如何通过已编写的{{1}告诉form_for我想要创建/更新而不是在ProfilesController中重写CompletedSetsController
的CRUD
我的CompletedSets
是脚手架生成的CRUD控制器。
这是我的表格:
现在,只有将CompletedSetsController
放在@completed_set = CompletedSet.new
中,这个表单才有效,但这不是很干,特别是如果我必须重写ProfilesController中的create和update方法。
ProfileController
编辑:
更具体一点,我的个人资料页面是<%= 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 %>
中的semi-static页面,我的UsersController是非常基本的:
UsersController
我的所有控制器逻辑都在class UsersController < ApplicationController
def profile
# @completed_set = CompletedSet.new
end
def settings
end
end
中,我试图避免将其复制到UsersController中
答案 0 :(得分:1)
您可以在url
中指定form_for
选项,该选项将决定表单提交的位置:
<%= form_for @completed_set, url: completed_sets_path do |f| %>
答案 1 :(得分:0)
查看FormHelper上的可用选项,尤其是form_for的选项。如果默认情况不适合你的情况,你可以指定你想要的任何网址。