【发布时间】:2015-12-22 22:24:42
【问题描述】:
我在尝试为新公司帐户创建表单时收到“表单中的第一个参数不能包含 nil 或为空”错误。我已经在 Stack Overflow 上研究了类似问题的答案,但它们似乎没有解决我遇到的问题,因为我确保在我的 CompanyAccountsController#new 操作中有一个 CompanyAccount 模型的实例。
这是我的代码的相关部分。
CompanyAccountsController:
class CompanyAccountsController < ApplicationController
def new
@company_account = CompanyAccount.new
end
def create
@company_account = CompanyAccount.new(company_account_params)
if @company_account.save
flash[:notice] = "New customer created."
redirect_to root_url
else
flash[:error] = "Something went wrong."
render "new"
end
end
end
views/company_accounts/new.html.erb
<div class="row">
<div class="col-lg-8">
<div class="well bs-component">
<h2>Add New Customer</h2>
<%= form_for(@company_account) do |f| %>
<p>
<%= f.label 'Name'%><br>
<%= f.text_field :name %>
</p>
<p>
<%= f.label 'State' %><br>
<%= f.text_field :state %>
</p>
<p>
<%= f.submit class: 'btn btn-success', id: 'submit_customer', value: 'Save customer' %>
</p>
<% end %>
</div>
路线:
company_accounts POST /company_accounts(.:format) company_accounts#create
new_company_account GET /company_accounts/new(.:format) company_accounts#new
edit_company_account GET /company_accounts/:id/edit(.:format) company_accounts#edit
company_account GET /company_accounts/:id(.:format) company_accounts#show
PATCH /company_accounts/:id(.:format) company_accounts#update
PUT /company_accounts/:id(.:format) company_accounts#update
DELETE /company_accounts/:id(.:format) company_accounts#destroy
root GET / company_accounts#index
现在我的解决方案是使用
<%= form_for(CompanyAccount.new) do |f| %>
解决这个问题,正如这里许多类似问题的答案所建议的那样。我确实认为这似乎有点 hacky,我忽略了真正的错误。如果有人能帮我解决这个问题,我将不胜感激。
【问题讨论】:
-
这是整个控制器的代码吗?因为那时没有设置
company_account_params。 -
不,这不是完整的代码。我只是没有添加 company_account_params 方法。看起来像这样
def company_account_params params.require(:company_account).permit( :name, :state ) end -
只是问,因为这可能是个问题。你的模型文件是什么样的?数据库设置好了吗?您可以访问公司帐户表吗?正如@m4risU 所提到的,您是否有一个回调,例如
set_company_accounts,并让它用before_action填充数据?如果是这样,请确保在其上放置异常,或者让它仅填充控制器的必要方法。这可能是另一个问题。 -
亚历山大,感谢您的努力。回答你的问题。该模型看起来就像一个通用模型。我没有添加任何东西。数据库已建立,我可以从 rails 控制台访问 company_accounts 表。我没有使用回调,也没有使用任何 before_action 方法。这就是我如此困惑的原因。
-
你能告诉我们错误的堆栈跟踪吗? (通常是 20-30 行文件名)可能帮助我们确定错误的来源。
标签: ruby-on-rails ruby-on-rails-4 formhelper