2013-03-16 1 views
0

Я пытаюсь добиться следующего:Образцы формы поиска для конкретного URL

Когда пользователь вводит 5-значный идентификатор в виде в www.something.com, пользователь будет перенаправлен на www.something.com/obtain/(5 digit ID).

Я знаю, что вручную введите url www.something.com/obtain/(5 digit ID) приведет к желаемому действию, но как мне создать форму, которая делает это вместо этого?

В любом случае, я могу достичь этого с помощью <%= form_tag .... %>?

Rake маршруты имеет следующую запись

получить /obtain/:pid(.:format) продукты # получить {: идентификатор =>/\ d + /}

В настоящее время в контроллер

def obtain 
    scrapy = Scraper.new 

    @product = scrapy.scrape((params[:pid])) 

    if @product 
     redirect_to @product, notice: 'Product successfully updated' 
    elsif 
     redirect_to root_path, notice: 'Invalid product requested' 
    end 
    end 
+0

измените ваш elsif на другой. Было бы более «правильным». – Zippie

ответ

0

Если вы отправляете форму, вы будете иметь функцию или код для обработки входов, т.е., по меньшей мере экстрагирование request.query как:

$var = request.query("ID") 

Так после того, что код выполняется это задачи/все, что вам нужно, это линия для переадресации, как:

whatever.redirect("www.something.com/obtain/" & $var 
0

С вашей точки зрения создания формы:

<%= form_tag({:controller=>"products", :action=>"obtain"}, :method => "get") do %> 
     <%= text_field_tag(:pid) %> 
     <%= submit_tag "Search with PID" %> 
<% end %> 

I не знаю, срабатывает ли ваше действие obtain с get, но если оно не просто изменит его на все, что он запускается (сообщение, поместить).

+0

Приобретение не выполняет поиск определенного pid в базе данных. Он фактически передает его другой функции для выполнения некоторой другой функции. Я не уверен, что мне следует изменить здесь. – rlhh

+0

вы можете предоставить более необходимый код? – Zippie

+0

О, я вижу, вы добавили его. Я также изменил ответ. Это хорошо или я чего-то не хватает? – Zippie

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