У меня есть приложение Rails 4.0 с моделью «порядок», у которой есть поле статуса. Вызывая действие «показать», чтобы получить детали объекта «заказ», я хочу добавить дополнительные кнопки на странице «Показать» в дополнение к «Редактировать» и «Назад». Сначала отметьте «статус обновления», который будет обновлять статус этого объекта заказа до «1», а вторую кнопку - «закрыть заказ», который будет обновлять статус этого объекта заказа до 2. Как я могу достичь этого без «Изменить» действие/просмотр? Нужно ли использовать form_tag для добавления этих кнопок, и мне нужно написать 2 новых метода в OrdersController для обновления статуса?Rails обновляет поле без формы
Ниже мой show.html.erb с двумя кнопками, которые я хочу добавить ...
<p>
<strong>Name:</strong>
<%= @order.name %>
</p>
<p>
<strong>Status:</strong>
<%= @order.status %>
</p>
<%= link_to 'Edit', edit_order_path(@order) %> |
<%= link_to 'Back', orders_path %> |
<%= link_to 'Shipped', '#', :name => 'shipped_button' %> |
<%= link_to 'Close', '#', :name => 'close_button' %>
Если я нажимаю на «Доставлено» или кнопку «Закрыть», они оба будут призваны «OrdersController» как запрос 'GET', как показано ниже,
.. работы GET "/ заказы/1? имя = shipped_button" для 127.0.0.1 в 2014-11-21 15:40:38 -0800
обработки по OrdersController # показать как HTML
Параметры: {"name" => "shipped_button", "id" => "1"}
Заказать груз (0,1 мс) ВЫБЕРИТЕ «заказы». * FROM «заказы» WHERE «заказы». «Id» =? LIMIT 1 [[ "ID", 1]]
Оказываемые заказы/show.html.erb в макетах/приложений (1.9ms)
Завершено 200 OK в 50 мс (Просмотров: 47.8ms | ActiveRecord: 0,1 мс)
Как обновить модель с соответствующим обновлением поля состояния. «status» - целое поле в модели «заказов».
Я не могу понять, что вы хотите. действительно. Не могли бы вы объяснить это более подробно? Однако вы можете передать действия функции link_to, как описано в этом вопросе [http://stackoverflow.com/questions/5607155/ruby-on-rails-3-link-to-controller-and-action) –
Да, этот ответ, который вы указали, выглядит как бы в этом случае. link_to просто вызывает действие в контроллере с id или целым объектом в качестве входного параметра. – Atarang