如果未选择f.collection选项,则会丢失模板错误

时间:2018-11-29 14:36:30

标签: ruby-on-rails

在我的表单中,如果用户将必填字段留空并尝试创建帖子,则会弹出正确的消息,提示他们需要先填写该必填字段。

但是,如果用户未从f.collection_select下拉菜单中选择一个选项并尝试提交表单,则它不会让用户知道他们需要选择一个选项,而是收到丢失的模板错误

但是,如果所有字段均已填写,并且按预期方式将帖子转到显示页面,则没有错误,所以我很困惑为什么如果未选择任何必需的f.collection选项,为什么会出现缺少的模板错误

    div class="panel-body">

        <%= simple_form_for(@job, html: {multipart: true}) do |f| %>
        <%=f.collection_select :category_id,Category.all, :id ,:name, {:prompt=> "Select Category" ,:required=> true} %>
        <%=f.collection_select :city_id, City.all, :id ,:name,:prompt=> "Select City" %>


        <div class="form-group mb-3">
        <br>
        <%= f.input :title,required: true,label: "Your Business Name (required)" %>
        <%= f.input :description,required: true,label: "Tell Us About Your Service (required)" %>
        </div>

    <%= button_tag(type: "submit", class: "btn btn-primary") do %>
    <span><i class="glyphicon glyphicon-wrench"></i> List Service</span>
        <% end %> 

缺少模板错误消息

 Missing template jobs/New, application/New with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :haml, :jbuilder]}

enter image description here

1 个答案:

答案 0 :(得分:1)

检查操作在控制器中的作用,可能是您正在重定向用户以查找没有模板的路径,此错误是正确的。

否则,您可以检查表单是否发送正确的HTTP方法,请看以下示例:

路径:

POST http://url.com/resources 

(通常)会将用户发送到#create方法

相同的路径     获取http://url.com/resouces 将您带到一个#index用户,需要一个模板进行渲染

OBS:我是该平台的新手,目前无法评论,请尝试对您的错误进行描述。

更新

错误(缺少模板)是因为您的控制器正在尝试渲染新文件,并且您没有job.new.html.erb文件。

要解决此问题,请将收藏集更改为此:

<%= f.collection_select(:city_id, City.all, :id, :name, {:prompt => 'Choose a city'}, {:required => true}) %>