Я получаю ошибку «Первый аргумент в форме не может содержать nil или быть пустой» при попытке создать форму для новой учетной записи компании. Я изучил ответы на подобные вопросы здесь, в разделе «Переполнение стека», но они, похоже, не затрагивают проблему, с которой я столкнулся, так как я убедился, что экземпляр модели CompanyAccount в моем новом действии CompanyAccountsController #.Еще один: Rails 4: Первый аргумент в форме не может содержать nil или быть пустым
Вот некоторые из частей моего кода.
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
просмотров/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| %>
, чтобы решить эту проблему, как предложено в ответе на многие подобные вопросы здесь. Я думаю, что это кажется немного взломанным, и я забываю, что действительно неправильно. Я был бы очень признателен, если бы кто-то помог мне с этим.
Это код всего контроллера? Потому что тогда не задано 'company_account_params'. –
Нет, это не весь код. Я просто не добавил метод company_account_params. Похоже, что это 'def company_account_params params.require (: company_account) .permit ( : name, : state) end' –
Просто спрашивайте, потому что это могло быть проблемой. Как выглядит ваш файл модели? Создана ли база данных? Вы можете получить доступ к таблице счетов компании? И как упоминалось в @ m4risU, есть ли у вас обратный вызов, например 'set_company_accounts', и пусть он заполняет данные с помощью' before_action'? Если это так, убедитесь, что вы наложили на него исключение или иначе разрешите только заполнить необходимые методы вашего контроллера. Это может быть другой проблемой. –