Как я могу создать форму Rails на основе объекта с использованием HAML? - PullRequest
0 голосов
/ 18 июля 2011

Если у меня есть модель с именем Клиент и контроллер, которая выглядит следующим образом

class ClientController < ApplicationController
def new
  @client = Client.new
  @client.name = "New Guy"
end
end

и я использую HAML, как должен выглядеть мой вид для визуализации формы, основанной на этом.

У меня есть

%p= @client.name
-form_for :client, @client do |c|
 c.label :c.name
 c.text_field :c.name

но мой HTML выглядит так

<p>New Guy</p>
<form accept-charset="UTF-8" action="/client/new" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="orGtE1V05QIaye5kSsAi5SBdEAV0AJX9uZYUzHw5P64=" /></div>
  c.label :c.name
  c.text_field :c.name
</form>

Обновление: Спасибо за ответы. когда я меняю вид на

%p= @client.name
-form_for :client, @client do |c|
  = c.label :c.name
  = c.text_field :c.name 

Я получаю следующую ошибку

undefined method `name' for :c:Symbol

Extracted source (around line #3):

1: %p= @client.name
2: -form_for :client, @client do |c|
3:   = c.label :c.name
4:   = c.text_field :c.name

Если я закомментирую строки 2,3 и 4, имя печатается нормально. Чего мне не хватает?

Обновление 2:

Если я изменю вид на

%p= @client.name
-form_for :client, @client do |c|
 c.label :name
 c.text_field :name

больше ошибок нет. Спасибо.

Ответы [ 3 ]

0 голосов
/ 18 июля 2011

Я думаю, что это так:

%p= @client.name
-form_for :client, @client do |c|
  =c.label :c.name
  =c.text_field :c.name

Это, конечно, не учитывает визуальное форматирование ...

0 голосов
/ 18 июля 2011

Это то, что вы хотите:

%p= @client.name

- form_for :client, @client do |c|
 = c.label :c.name
 = c.text_field :c.name
0 голосов
/ 18 июля 2011

Вам нужно использовать = перед вызовом функции ruby, чтобы они оценивались.

%p= @client.name
-form_for :client, @client do |c|
  = c.label :c.name
  = c.text_field :c.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...