Rails 3, отправка формы своему контроллеру - PullRequest
2 голосов
/ 21 марта 2011

Я новичок в Rails, и я только что провел еще час, погугляя и не найдя примера.

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

<%= form_tag(:action => 'submit') do |f| %>
<%= f.text_field :email, :value => "Your email address...", :class => "text", :id => "email", :name => 'email',
        :onFocus => "change(this,'#222222'); this.value=''; this.onfocus=null;",
                :size => "26" %>
<%= f.hidden_field :ref_code, :id => 'ref_code', :name => 'ref_code', :value => @referralid %>
<%= submit_tag "Enter To Win", :class => "button-positive submit" %>
<% end %>

Все, что я вижу, имеет формы, использующие модель, мне не нужно сохранять эти данные, просто передайте их в API.

Итак, я подумал, что я просто создаю действие в домашнем контроллере, где эта страница живет, и действие отправляется на него, но я получаю RoutingError, и это: ни один маршрут не соответствует {: action => "submit",: controller => "home"}

Так что мне нужно поместить в Routes.rb?Я попробовал:

namespace :home do 
  resources :submit 
end

Без радости ... Я уверен, что это просто, но я просто не могу найти правильный пример.

1 Ответ

10 голосов
/ 21 марта 2011

Я думаю, что вам стоит взглянуть на направляющие ruby ​​, это очень хорошо объяснено (но я не думаю, что речь идет об API), и это сэкономит вам много времени в будущем Клянусь.

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

По сути, я всегда называю действие контроллера (MVC), следуя этому пути, вы должны иметь контроллер (?? apis_controller ??) и вызывать одно его действие.

Таким образом, вы хотите использовать form_tag вместо form_for, потому что вы не обращаетесь к модели, поэтому вы хотите избавиться от f. и использовать суффикс _tag ( api ) .

<%= form_tag(send_api_path) do %>
<%= text_field_tag :email, "Your email address..." %>
<%= hidden_field_tag :ref_code,  @referralid %>
<%= hidden_field_tag :api_name, 'your_api_name' %>
<%= submit_tag "Enter To Win" %>
<% end %>

Затем в вашем apis_controller.rb вы создаете действие send, в которое отправляете и управляете запросом.

#apis_controller.rb
def send
  # TODO: your code here
end

Другое дело установить маршруты, что-то вроде

#routes.rb
  match 'apis/send' => 'apis#send', :as => :send_api

Я уверен, что это не 100% рабочий код, но он должен быть полезен

Как позвонить в API? Я быстро посмотрел и нашел это.

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

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