我的控制员:
class SkyscraperApplicationsController < ApplicationController
def new
@skyscraper=SkyscraperApplications.new(skyscraper_params)
if @skyscraper.save
redirect_to "/skyscraper_applications/new", :notice => t("skyscraper_saved")
else
redirect_to "/skyscraper_applications/new", :notice => t("skyscraper_failed")
end
end
private
def skyscraper_params
params.require(:skyscraper_applications).permit(:name, :employee_count, :usecase, :email_admin, :what_you_do)
end
end
我的表单在skyscraper_applications / new.html.erb中:
<form class="form-horizontal">
<%= simple_form_for @skyscraper do |f| %>
<div class="control-group">
<label class="control-label" for="name"><%=t ".company_name"%></label>
<div class="controls">
<div><%= f.input :name, :label=>false %></div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="employees"><%=t ".no_of_employees"%></label>
<div class="controls">
<div><%= f.input :employee_count, :label=>false %></div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="employees"><%=t ".usecase"%></label>
<div class="controls">
<%= f.select :usecase, options_for_select([["Select One", ""], "CAD/Render", "Video Production/Editing", "Music Production", "Game Design", "Email/Web", "Other"])%>
</div>
</div>
<div class="control-group">
<label class="control-label" for="Administrator"><%=t ".admin_email"%></label>
<div class="controls">
<div><%= f.input :email_admin, :label=>false %></div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="Administrator"><%=t ".what_you_do"%></label>
<div class="controls">
<div><%= f.input :what_you_do, :label=>false, :as => :text, :input_html => { :rows => 4 }%></div>
</div>
</div>
<div class="control-group">
<div class="controls">
<div class="test-drive-submit"><%= f.button :submit, t(".submit")%></div>
</div>
</div>
</form>
<%end%>
所以我不确定为什么我收到此错误是因为:skyscraper_applications在我的架构中添加所有字段都是正确的。我觉得我的方法和simple_form_for都很好。我是否对强大的障碍做错了什么?提前谢谢!
答案 0 :(得分:0)
错误只是说params[:skyscraper_applications]
为空或缺失。
我相信Rails会在这种情况下使用单数形式(通过查看生成的HTML或提交的参数可以轻松确认)所以你应该这样做 params.require(:skyscraper_application).pemit(...)
你的班级名是复数,铁栏不会期待 - 铁轨拐点会从最后剥离“s”。
此外,使用新操作是错误的 - 在没有参数的情况下达到新操作是正常的,因为这是您查看表单的方式。你好像在组合创建和新的动作,除此之外,如果它不是当前的错误,你会得到一个无限的重定向循环:无论保存的结果是什么,你重定向回到新的(这将再次重定向)。
您应该移动代码以实例化并将记录保存到create操作。