Проблема: я ищу способ иметь отдельные уведомления для разных значений в столбце таблицы.
У меня есть order_status, который имеет 3 отдельных значения, созданных, отмененных и начисленных.
Мне бы хотелось иметь 3 отдельных уведомления для каждого, когда столбцы меняются из вида.
представление будет выглядеть примерно так:
<%= form_for @order, remote: true do |f| %>
<%= f.hidden_field :order_status, value: "cancelled" %>
<%= f.button type:'submit', class: "btn btn-danger" %>
<% end %>
Это изменит столбец на «отмененный».
Затем я хочу создать метод, подобный:
def cancel_update
respond_to do |format|
if @order.update(params[:order_update])
if user_signed_in?
if @order.order_status = "cancelled"
format.html { redirect_to @order, notice: 'Order was successfully cancelled.' }
format.json { render :show, status: :ok, location: @order }
else
format.html { render :edit }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
end
end
Но этот метод не сработал так, как я планировал. Когда я использую этот метод, ничего не происходит, когда я нажимаю кнопку, нет перезагрузки страницы, перенаправления и т. Д. Я получаю сообщение об ошибке: «Не удалось найти действие« обновление »для OrdersController»
(Это было проверено путем удаления оригинального метода обновления - ниже).
Теперь, когда я использую этот метод обновления, он работает, но не указывает точку обновления значения только для order_status.
def update
respond_to do |format|
if @order.update(order_params)
if user_signed_in?
format.html { redirect_to @order, notice: 'Order was successfully uploaded.' }
format.json { render :show, status: :ok, location: @order }
else
format.html { render :edit }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
if buyer_signed_in?
format.html { redirect_to @order, notice: 'Order was successfully updated.' }
format.json { render :show, status: :ok, location: @order }
else
format.html { render :edit }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
end
Вот еще одна попытка, которая как-то не сработала:
def order_cancel
respond_to do |format|
if @order.update(order_status)
format.html { redirect_to @order, notice: 'Order was successfully cancelled.' }
format.json { head :no_content }
end
end
end
private
def order_status
params.permit(:order_status)
end
Как я могу точно указать значения order_status из контроллера, чтобы иметь возможность выполнять отдельные действия и извещения об изменении значений конечным пользователем?