По умолчанию RESTful-маршрутизация Rails запрещает действие create
по протоколу GET
(обычный URL-адрес). Для вашего конкретного примера вам нужно добавить этот маршрут в ваш файл config / rout.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 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
.