我一直收到此错误"param is missing or the value is empty: skyscraper_applications"我不确定为什么



my controller:

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都很好。我对强参数做错了什么吗?提前感谢!

错误只是说params[:skyscraper_applications]是空的或丢失的。

我相信 Rails 在这种情况下会使用单数形式(通过查看生成的 HTML 或提交的参数很容易确认),所以你应该这样做 params.require(:skyscraper_application).pemit(...)

你的类名是复数的,这是 rails 不会预料到的 - rails 屈折将从末尾剥离"s"。

此外,按原样使用新操作是错误的 - 到达没有参数的新操作是正常的,因为这就是您查看表单的方式。您似乎正在结合创建和新操作,如果不是因为当前错误,您看起来会得到一个无限的重定向循环:无论保存的结果如何,您都会重定向回新的(这将再次重定向)。

应将用于实例化和保存记录的代码移动到创建操作中。

相关内容

最新更新