Как сделать так, чтобы сообщение об ошибке флэш-памяти не отображалось при загрузке страницы, пока кнопка не нажата в ruby ​​на рельсах? - PullRequest
0 голосов
/ 27 января 2012

Я пытаюсь найти способ, чтобы это флэш-сообщение не отображалось при загрузке страницы:

class SearchesController < ApplicationController

   def index

     @users = User.search params[:search]
     @default_image = "/assets/default_avatar.jpg"
     if @users.empty? || params[:search].blank? 
        flash[:error] = "Sorry no user(s) found!" if @users.empty?
        flash[:error] = "Please give us something to search for!" if params[:search].blank?
        render 'index'
     end    
   end
end

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

flash[:error] = "Please give us something to search for!" if params[:search].blank? after_get 

Подумайте, что было после того, как был составлен.

Я уверен, что у кого-то есть ответ на этот вопрос.

Я видел after_commit в rails api, но нет примера того, как использовать его в моей ситуации или даже если это то, что мне нужно.

Добрые награды

Ответы [ 3 ]

1 голос
/ 27 января 2012

Простым решением было бы добавить скрытое поле в форму поиска и проверить, присутствует ли это значение вместо фактической строки поиска.

Просмотр

<%= hidden_field_tag :searching, true %>

Контроллер

flash[:error] = "Please give us something to search for!" if params[:searching]
0 голосов
/ 27 января 2012

Если я правильно понимаю, вы получаете доступ к действию 'index' либо с помощью запроса GET (в этом случае вам не нужно флэш-сообщение), либо с помощью формы POST, где заполнено поле: search.

Вы можете проверить, есть ли у вас запрос POST с помощью request.post? (также существует request.get?, request.put? и т. Д.)

class SearchesController < ApplicationController

  def index       
    @default_image = "/assets/default_avatar.jpg"
    if request.post? 
       @users = User.search params[:search]
       if @users.empty? || params[:search].blank? 
         flash[:error] = "Sorry no user(s) found!" if @users.empty?
         flash[:error] = "Please give us something to search for!" if params[:search].blank? 
       end
    end    
  end
end

Я удалил render 'index', я думаю, что это бесполезно.

0 голосов
/ 27 января 2012

Я могу думать о решении на основе сценариев Java, (но не о рельсах)

  1. Распечатать флеш-сообщение о рельсах в устройстве
  2. Держите это устройство скрытым
  3. Когда пользователь нажимает кнопку поиска, просто используйте сценарий Java для дисплей DIV

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

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...