@tekleworm

Как изменить поле?

Привет, есть модель из заданиями. В вьюхе есть две таблицы, в одной сделаные задания, во второй еще нет. Есть кнопка 'mark_as_complete' в таблице с не сделанными заданиями. Когда на неё нажимаешь надо изменить поле done из false на true. Делаю так
def change_state_to_done
    #Task.where(id: params[:cb_tasks]).
    @task.done = true
    @task.save
    redirect_to tasks_path
  end
это в контроллере, а в вьюхе так
<% @tasks.each do |task| %>
    <tr>
      <% unless task.done %>
        <td><%= check_box_tag "cb_tasks[]", task.id %></td>
        <td><%= link_to task.title, task %></td>
        <td><%= link_to 'Edit', edit_task_path(task) %></td>
        <td><%= link_to 'Marks_as_done', change_state_to_done_path %></td>
        <td><%= link_to 'Destroy', task, method: :delete, data: {confirm: 'Are you sure?'} %></td>
      <% end %>
    </tr>
  <% end %>

Знаю что не правильно, мб кто подскажет?
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
Тут 3 варианта:
1) Вы не передаёте id в url
<td><%= link_to 'Marks_as_done', change_state_to_done_path(task) %></td>

2) Вы объявили метод как put/patch и link сделали обычным get:
<td><%= link_to 'Marks_as_done', change_state_to_done_path(task), method: :put %></td>

3) Есть валидации, которые не дают сохранить объект:
Выполните @task.save! и посмотрите ошибки валидации, которые не дают Вам сохранить объект
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы