一个 Ruby 表单上的两个提交按钮到两个控制器

Two Submit Buttons to Two Controllers on One Ruby Form

我有一个适用于此表单的提交按钮:

_form.html.erb

<%= form_for(@goal) do |f| %>
  <% if @goal.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@goal.errors.count, "error") %> prohibited this goal from being saved:</h2>

      <ul>
      <% @goal.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="america">
<form>

  <div class="form-group">
    <%= f.text_field :name, class: 'form-control', placeholder: 'Enter Goal' %>
  </div>
    <div class="date-group">
      <label> Deadline: </label>
      <%= f.date_select :deadline, :order => [:month, :day, :year], class: 'date-select' %>
    </div>

<div class="america2">
  <%= button_tag(type: 'submit', class: "btn") do %>
  <span class="glyphicon glyphicon-plus"></span>
  <% end %>

  <%= link_to goals_path, class: 'btn' do %>
  <span class="glyphicon glyphicon-chevron-left"></span>
  <% end %>

  <%= link_to @goal, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn' do %>
  <span class="glyphicon glyphicon-trash"></span>
  <% end %>
</div>
  </form>
</div>
<% end %>

如何添加另一个指向不同 controller/model/index 的提交按钮?它是如何运作的:一旦用户完成了自己设定的目标,他们就可以将其打勾。我希望勾选提交按钮,通过将目标发送到 accomplished_goals 索引来更新目标索引中的目标。

除了向此视图表单添加内容外,我还需要向 GoalsController 或 AccomplishedGoalsController 添加任何内容吗?

感谢您的帮助!我无法从其他具有相似名称的 Whosebug 问题中找到解决方案。

很难从你的描述中看出你想要达到的目标,而且你的 html 似乎包含许多没有结束标签的开始标签。

据我了解,您的处理方式有误。我建议只使用一个带有名为 "accomplished" (true/false) 的 bool 列的 Goal 模型,而不是使用 Goal 模型和 AccomplishedGoal 模型。然后您可以只创建一个表单来更新此字段。要查找所有已完成的目标,您可以使用 scopes.

如果这不是您要查找的内容,请更详细地描述问题。