2010-11-05 9 views
1

Как передать параметры в приложение Rails с использованием обычного веб-url?Передача параметров по URL-адресу

Например, если у меня есть ..

http://0.0.0.0:3000/lists/create/list[name]=Paul & список [возраст] = 39 & список [Тег] = разное

Таким образом, я создал контроллер под названием списки, и я хочу, чтобы передать имя, возраст и тег ..

в моем примере я передаю ..

имя = Пол возраст = 39 тег = разное

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

Может ли кто-нибудь сказать мне, как я структурирую url выше, чтобы правильно передать параметры?

Благодаря Пол

+0

как вы публикуете до 0.0.0.0? –

+0

hmm thats адрес по умолчанию, к которому мне приказывают подключиться, когда я запускаю скрипт/сервер, я также пробовал localhost: 3000, но все равно получаю те же проблемы, все это было проверено локально на данный момент – Azalar

ответ

3

По умолчанию RESTful маршрутизации Rails запрещает на create действие через (регулярный URL) протокола GET. Для вашего конкретного примера, вам нужно будет добавить этот маршрут к конфигурации/routes.rb файл:

map.create_list 'list/create', :controller => 'lists', :action => 'create', :conditions => { :method => :get } 

Это добавляет маршрут create_list_path или create_list_url, который доступен через GET для ссылок и т.д. URL используется для создания список непосредственно будет:

http://0.0.0.0:3000/lists/create?list[name]=Paul&list[age]=39&list[tag]=misc 

Кроме того, обратите внимание, что если вы получаете ошибки о недействительных подлинности маркеров, вы можете добавить эту строку в ваш контроллер:

skip_before_filter :verify_authenticity_token, :only => :create 

Для более общих случаев настройки маршрутов аналогично и формы следующим образом:

Вы должны указать :method => 'get' в вашем form_tag.

Об этом говорится в руководстве Ruby on Rails Form Helpers (поиск «Общая форма поиска»).

Основной код при условии, что должно вам начать это

<%= form_tag(search_path, :method => "get") do %> 
    <%= label_tag(:q, "Search for:") %> 
    <%= text_field_tag(:q) %> 
    <%= submit_tag("Search") %> 
<% end %> 

генерирует

<form action="/search" method="get"> 
    <label for="q">Search for:</label> 
    <input id="q" name="q" type="text" /> 
    <input name="commit" type="submit" value="Search" /> 
</form> 

который GET с URL-адрес: http://my.server/search?q={query input}&commit=Search.

+0

У меня нет собственного формы на этом этапе, кроме того, что создало бы эшафот – Azalar

+0

В форме, созданной с помощью леса, вы должны иметь возможность добавить ': method => 'get'', чтобы поместить параметры в URL. –

+0

Есть ли способ сделать это без форм, я в конечном итоге хочу, чтобы иметь возможность просто вызвать URL-адрес, передав несколько параметров, чтобы он вообще не использовал формы – Azalar

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