1
我有一個.erb腳本的.erb和.haml,其工作方式之間的差:形式數據
<% form_for :ticket do |f| %>
<% if @ticket.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@ticket.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @ticket.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p><b>department</b><br/>
<%= select("ticket", "department_id", Department.find(:all).collect{ |d| [ d.name, d.id] }) %>
</p>
<label for="ticket_subject">subject</label> <%= text_field "ticket", "subject" -%><br/>
<label for="ticket_request">request</label> <%= text_area "ticket", "message" -%>
<br/><br/><br/>
<%= submit_tag 'make a request' -%>
<% end %>
但是當它在HAML轉化:
- form_for :ticket do |f|
- if @ticket.errors.any?
#error_explanation
%h2
= pluralize(@ticket.errors.count, "error")
prohibited this post from being saved:
%ul
- @ticket.errors.full_messages.each do |msg|
%li= msg
%label{:for => "ticket_name"} name
= text_field "ticket", "name"
%br/
%label{:for => "ticket_email"} email
= text_field "ticket", "email"
%br/
%p
%b department
%br/
= select("ticket", "department_id", Department.find(:all).collect{ |d| [ d.name, d.id] })
%label{:for => "ticket_subject"} subject
= text_field "ticket", "subject"
%br/
%label{:for => "ticket_request"} request
= text_area "ticket", "message"
%br/
%br/
%br/
= submit_tag 'make a request'
我有這樣的錯誤:
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.errors
在這一行
:
- if @ticket.errors.any?
感謝
我不相信它。 – gunn
是的!我做錯了什麼...但是@ticket存在於控制器中 @ticket = Ticket.new(params [:ticket]) – Vadim
我的問題是我設置了「@ticket = Ticket.new(params [:ticket])」之後「如果request.post?」 :) – Vadim