Две кнопки отправки для двух контроллеров в одной форме Ruby

У меня есть одна кнопка отправки, которая работает с этой формой:

_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 %>

Как добавить еще одну кнопку отправки, которая ведет к другому контроллеру / модели / индексу? Как это работает: как только пользователь достигает поставленной перед собой цели, он может отметить ее. Я хочу, чтобы кнопка «Отключить его» обновляла цель из индекса целей, отправляя ее в индекс done_goals.

Нужно ли мне добавлять что-либо в GoalsController или CompletedGoalsController, кроме добавления чего-либо в эту форму представления?

Спасибо за помощь! Я не смог найти решение из других вопросов StackOverFlow с аналогичным названием.


person AnthonyGalli.com    schedule 03.01.2015    source источник
comment
не могли бы вы объяснить это ясно и удалить весь ненужный код. Я не понимаю. Для второй кнопки отправки просто добавьте link_to: ‹% = link_to 'text', {: controller =› имя контроллера,: action = ›index,: paramname =› paramvalue},: method = ›post или получите%› apidock.com/rails/ActionView/Helpers/UrlHelper/link_to   -  person dima    schedule 04.01.2015


Ответы (1)


Из вашего описания трудно сказать, чего вы пытаетесь достичь, и ваш html кажется запутанным с множеством открывающих тегов, у которых нет закрывающих тегов.

Насколько я понимаю, вы подходите к этому неверно. Вместо того, чтобы иметь модель Goal и модель CompleishedGoal, я рекомендую просто иметь модель Goal со столбцом типа bool с именем «выполнено» (истина / ложь). Затем вы можете просто создать одну форму для обновления этого поля. Чтобы найти все достигнутые цели, вы можете использовать scopes.

Если это не то, что вы ищете, опишите проблему более подробно.

person Aventuris    schedule 03.01.2015
comment
Спасибо за вашу помощь, извините за боль. Вот насколько я кодирую ваши предложения: stackoverflow.com/questions/27761029/. Еще раз спасибо, ваше предложение избавило меня от многих душевных страданий. - person AnthonyGalli.com; 04.01.2015
comment
Я рекомендую вам прочитать официальные руководства по Rails (особенно по MVC и снова по областям действия) и изучить базовое руководство. Очевидно, что вы не тратили время на то, чтобы разобраться в масштабах. - person Aventuris; 04.01.2015