【问题标题】:Rails 3, Form submitting to its controllerRails 3,表单提交到其控制器
【发布时间】:2011-03-21 18:49:32
【问题描述】:

我是 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 =>“家”}

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

namespace :home do 
  resources :submit 
end

No Joy...我确信这很简单,但我就是找不到合适的例子。

【问题讨论】:

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


    【解决方案1】:

    我认为你应该看看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.

    当您寻求帮助时,最好附上您遇到的错误,这样可以让人们更容易理解问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      相关资源
      最近更新 更多