2017-02-10 5 views
0

Я создаю кнопку, которая запускает действие под названием sell, которое, как говорится, продает пользовательскую вещь. Но у пользователя должно быть больше 0 (вещей), в базе данных (User.amount> 0), чтобы иметь возможность продавать что угодно. Я знаю, что форма по умолчанию имеет некоторые сообщения об ошибках, когда пользователь оставил некоторые части пустыми. (появляется красное сообщение и не позволяет пользователю перейти на следующую страницу). Я пытаюсь сделать что-то подобное, не позволяя пользователю перейти на страницу продажи и отобразить сообщение. Это мое действие ПРОДАВАТЬ:Как воссоздать ошибку формы по умолчанию, но в действии?

def sell 
    team_id = 9 
find_the_specific_row = current_user.user_stocks.find_by team: team_id 

if find_the_specific_row.nil? or find_the_specific_row == 0 

else 
     find_the_specific_row.update(:amount => find_the_specific_row.amount - 1) 
     redirect_to portfolios_path 
    end 
end 

Пустой пробел после if, где код должен быть. Я пробовал читать документацию об ошибках, но не нашел ничего подобного ситуации.

ответ

0

Если вы хотите восстановить сообщение о проверке при работе с моделями, вы можете использовать метод errors.add для достижения этого. В вашем случае что-то вроде:

find_the_specific_row.errors.add(:amount, :greater_than, count: 0) 

Возможно, вы ищете то, что ищете. Это добавляет ошибку в поле amount, в котором отображается сообщение об ошибке more_than, указанное в разделе ошибок вашего языкового файла.

Затем, предполагая, что у вас есть настройка представления, чтобы отображать эти сообщения об ошибках, вы должны получить желаемый результат, аналогичный тому, который используется при использовании форм.

Взгляните at working with validation errors here и он должен надеяться, что сможем помочь вам и предоставить дополнительную информацию о том, что можно сделать при работе с ошибками проверки.

Если вы не хотите связывать ошибки с моделью, вы можете использовать flash.
вспышка является переменной, которая сохраняет в сессии, которая будет отображаться в представлении, так что вы могли бы написать что-то вроде:

flash[:alert] = "Amount must be greater than 0" 

и вы можете получить доступ к флэш в представлениях, при перенаправлении, вспышка нормально , если вы визуализируете представление, вам нужно будет использовать flash.now.

+0

У вас есть ссылка, где я могу больше узнать об этом и использовать его больше в том, как я хочу? И что вы подразумеваете под «предполагая, что у вас есть настройка представления для отображения этих сообщений об ошибках»? Это о поле уведомления в верхней части представления? – RedManBrasil

+0

@RedManBrasil Я добавил ссылку на мой ответ, который, надеюсь, поможет вам немного больше. Я имею в виду, я думаю, что представление уже настроено для отображения сообщений об ошибках моделей, и если это так, то это должно быть хорошо. –

+0

Он возвращает ошибку _undefined method 'errors' для nil: NilClass_ – RedManBrasil

 Смежные вопросы

  • Нет связанных вопросов^_^