在我的表单中,如果用户将必填字段留空并尝试创建帖子,则会弹出正确的消息,提示他们需要先填写该必填字段。
但是,如果用户未从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]}
答案 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}) %>