我已经在SO和几个博客上阅读了几篇帖子,但没有一篇明确说明当您使用:remote => true
时如何在视图上呈现错误消息
我确信我不会尝试做以前没做过的事情。
所以我有一张表格
<%= form_for template, url: url, html: {class: 'padding-top-10'}, :remote => true do |f| %>
<%= f.text_field :name, class: 'form-control', placeholder: 'What is the name of the new role?' %>
<%= f.submit 'CREATE' , class: 'btn-block btn btn-primary'%>
<% end %>
我想要的只是当我提交表单时,我希望能够在屏幕上为用户显示错误消息。
def add_job_template
@template = JobTemplate.new(job_template_strong_params)
if @template.save
render json: { success: 'Information has been saved' }}
else
render json: { errors: @template.errors.full_messages }, status: 422
end
end
现在的问题。
如何在我的视图中显示此success
或errors
响应?
答案 0 :(得分:0)
您需要一种方法来处理响应,您可以在消息实例变量中设置一个值,具体取决于是否保存了记录,然后在响应您的方法的js文件中设置,以满足您的需要这个值:
def add_job_template
@template = JobTemplate.new(job_template_strong_params)
@message = @template.save ? 'Template saved' : 'Template not saved'
respond_to :js
end
然后在您的app / views / templates / add_job_template.js.erb中,您可以显示@message
的值:
console.log('<%= @message %>')
如果渲染一个json,你就拥有了所需的数据,但是如果你用js格式进行响应,那么你需要做一些事情,那么它将寻找一个被称为当前方法的js文件。 p>