Rails 3,表单提交给其控制器

时间:2011-03-21 18:49:33

标签: ruby-on-rails-3 forms controller

我是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 =&gt;“submit”,:控制器=&gt; “中的家”}

那么我需要在Routes.rb中添加什么?我试过了:

namespace :home do 
  resources :submit 
end

没有喜悦......我确信这很简单,但我找不到合适的例子。

1 个答案:

答案 0 :(得分:10)

我认为你应该看一下the ruby guides,它的解释非常好(但我不认为它涉及到API),并且它会在将来节省你很多时间,我发誓。

不确定你的意思,但我看到一些有线的东西,所以我希望有用,但如果你从网上关注一些教程,请告诉我们链接。

基本上我所做的总是调用一个控制器(MVC)的动作,这样你应该有一个控制器(?? apis_controller ??)并调用它的一个动作。

所以你想使用form_tag而不是form_for,因为你没有对模型进行处理,因此你想要摆脱f.并使用后缀_tagapi)。

<%= 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%正常工作的代码,但它应该是有用的

How to call the api? I had I fast look and found this.

当你寻求帮助时,附上你得到的错误总是好的,这使人们更容易理解这个问题。