2012-06-03 1 views
0

Я довольно новичок в Ruby on Rails, формы в последнее время приносят мне всевозможные проблемы, поэтому ваша помощь и поддержка здесь были бы очень ценными.Неполадка настройки поля поиска для передачи искомого значения в функцию

В моем home.html.erb файле у меня есть этот код:

<%= form_tag({:controller => "pages", :action => "search"}, :method => "get", :class => "grabTweets") do %> 
    <%= text_field_tag(:tweets)%> 
    <% end %> 

Я пытаюсь принять значение, которое пользователь вводит в это поле поиска и передать его в функцию под названием grabTweets, который содержит следующий код:

def grabTweets(mySearch) 
    @tweet = Twitter.search(mySearch + "[pic] "+" instagr.am/i/", :rpp => 2, :result_type => "recent").map do |status| 
    @tweet = "#{status.text}" #class = string 
    urls = URI::extract(@tweet, "http") #returns an array of strings 
    end 
    end 

мой код формы в home.html.erb делает правильно, но не взаимодействует с функцией grabTweets. Как много гуглингов и возиться, как и я, я не могу понять ответ. Код в home.html.erb добавляет это в конец моего URL-адреса localhost: /assets?utf8=✓&tweets=google, поэтому поиск неправильно маршрутизируется.

Заранее благодарен!

+0

Вы добавили запись для своего поиска на route.rb? Как выглядит ваше действие поиска? –

+0

@FrederickCheung Я ничего не сделал для редактирования моего файла route.rb, отличного от root "/", на 'pages # home'. Что бы вы предложили мне здесь? –

+0

@FrederickCheung Как бы я попросил маршрут для вызова определенной функции в моем контроллере страниц? –

ответ

0

Есть две вещи: во-первых вы должны убедиться, что ваш URL получает направляется в контроллер записи

match '/search', :to "pages#search" 

должны это сделать.

Тогда в поисках действия вашего PagesController, вызовите

grabTweets(params[:tweets]) 

и сделать что-то интересное с результатами. Очевидно, если grabTweets не является методом экземпляра на вашем контроллере, тогда вам нужно будет отрегулировать, как вы его вызываете.

0

Ваш адрес в порядке. Для поиска вы должны иметь аргументы, переданные как параметры GET (как вы сейчас делаете)

Проблема заключается в том, как вы получаете доступ к аргументу поиска. Вместо того, чтобы пытаться прочитать аргумент в функции, как это:

def grabTweets(mySearch) 
    @tweet = Twitter.search(mySearch + "[pic] "+" instagr.am/i/", :rpp => 2, :result_type => "recent").map do |status| 
    @tweet = "#{status.text}" #class = string 
    urls = URI::extract(@tweet, "http") #returns an array of strings 
    end 
end 

Отсчитать Params хэш:

def grabTweets 
    @tweet = Twitter.search(params[:tweets] + "[pic] "+" instagr.am/i/", :rpp => 2, :result_type => "recent").map do |status| 
    @tweet = "#{status.text}" #class = string 
    urls = URI::extract(@tweet, "http") #returns an array of strings 
    end 
end 

И это Руби. Не используйте переменные CamelCase.

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