разница между .erb и .haml в данных формы - PullRequest
1 голос
/ 18 июля 2011

У меня есть скрипт .erb, который работает:

<% 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 %>

но когда он был преобразован в хамл:

- 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?

спасибо

Ответы [ 2 ]

1 голос
/ 10 января 2012

Пожалуйста, попробуйте

- form_for @ticket do |f|
0 голосов
/ 18 июля 2011

Это не ошибка Хамла, @ticket не было определено. Вы должны определить это в вашем контроллере.

...