Использование флажка для изменения логического атрибута на модели (рельсы)

Я делаю приложение со списком продуктов, в котором я хотел бы позволить пользователям отмечать товары, которые они поместили в корзину. Я хотел бы сделать это, переключая атрибут "найдено" с ложного на истинное (в моей модели "предмет").

Вот код, который у меня есть для этого:

<% for item in @items %>
    <tr>
        <td><%= check_box, item, :found, {}, true, false %></td>
        <td><%= item.quantity %></td>
        <td><%= item.name %></td>
        <td><%= item.category %></td>
    </tr>
    <br />
<% end %>

Затем у меня есть ссылка "обновить" внизу страницы. В списке много элементов, и когда я прошу обновить список, я предполагаю, что я также обновляю атрибуты элементов в этом списке.

<%= link_to "Update", @list, :method => :put %> |

Вот действие обновления в моем контроллере списка:

  def update 
    @list = List.find(params[:id])
    if @list.update_attributes(params[:list])
      flash[:notice] = "Successfully updated list"
      redirect_to @list 
    else 
      render :action => 'edit'
    end 
  end

Я считаю, что правильно следую документации для check_box. Тем не менее, каким-то образом "найденный" логический параметр остается ложным после обновления. Кто-нибудь знает, как правильно это реализовать? Я бы не хотел пока использовать AJAX. Спасибо!

2 ответа

Решение

Есть ли вероятность, что ваша модель может иметь атрибут attr_accessible для некоторых атрибутов или attr_protected для: found?

Попробуйте изменить атрибуты update_attributes на update_attributes! и посмотрим, получишь ли ты больше информации.

Некоторые другие предложения могут состоять в том, чтобы выгрузить параметры в журнал, попытаться выполнить прямое назначение модели (например, item.found = params[:found] == '1'), убедиться, что вы установили флажок 1 или 0 правильно интерпретируется как логическое значение true, false.

Я ненавижу ссылки на свой блог, но в этом случае вы можете проверить их, поскольку они имеют прямое отношение (и IMO, намного красивее, чем решение с полным циклом запросов).

Другие вопросы по тегам