【问题标题】:Ruby on Rails: Processing a form that is not linked to a modelRuby on Rails:处理未链接到模型的表单
【发布时间】:2013-08-01 18:24:40
【问题描述】:

我在实现这一点时遇到了困难。此外,我在控制器的索引页面上遇到了“参数数量错误(0 为 1)”的错误。

routes.rb

resources :potentialcandidates, :only => [:index, :send, :process]
get 'potentialcandidates/send' => 'potentialcandidates#send', :as => :send_potentialcandidate
post 'potentialcandidates/process' => 'potentialcandidates#process', :as => :process_potentialcandidate

potentialcandidates_controller.rb

  class PotentialcandidatesController < ApplicationController
   def index
    end

   def process
    @name = params[:name]
    @email = params[:email]
    # Add user to user model
    @user = User.create(email: @email, name: @name, status: "active")
   end
 end

index.html.erb
&lt;a href="&lt;%= send_potentialcandidate_path %&gt;"&gt;Add&lt;/a&gt;

send.html.erb

    <%= form_tag process_potentialcandidate_path do %>
      <%= text_field_tag "name" %>
      <%= text_field_tag "email" %>
      <%= submit_tag %>
    <% end %>

【问题讨论】:

  • 索引页的其余部分是什么?您的错误来自将参数发送到不带任何参数的方法。
  • 这就是我的索引页上的全部内容,一个指向表单的链接。
  • 你确定错误来自索引吗?
  • 我在这里收到错误:localhost:3000/potentialcandidates。那不是索引页吗?
  • 啊,我明白了。您不能使用 process 作为控制器方法。用于ActionController::Base

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


【解决方案1】:

processActionController::Base 中的一个方法,您不想在控制器中覆盖它。

更改名称,更新您的路线和表单,并重新启动服务器;它应该可以正常工作。

【讨论】:

  • 我向控制器添加了一个空的发送方法,我遇到了同样的错误。
  • send也是ActionController::Base中的一个方法
  • 请记住,您还需要对路线和视图进行必要的更改。
  • 感谢它的工作!我有第二个问题......我正在尝试从一个表单中获取信息并在名为 User 的模型中创建一个新记录。调用 User.create() 后我需要做什么吗?
  • User.create 将在您的数据库中创建一个条目。如果您想稍后使用该信息,则必须使用 ActiveRecord 将该条目拉回。
猜你喜欢
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
相关资源
最近更新 更多