如果我有一个名为Client和控制器的模型,看起来像这样
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="✓" /><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
没有更多的错误。感谢。
答案 0 :(得分:0)
你需要在ruby函数调用之前使用=
,以便对它们进行评估。
%p= @client.name
-form_for :client, @client do |c|
= c.label :c.name
= c.text_field :c.name
答案 1 :(得分:0)
我认为就是这样:
%p= @client.name
-form_for :client, @client do |c|
=c.label :c.name
=c.text_field :c.name
当然没有考虑任何视觉格式......
答案 2 :(得分:0)
这就是你想要的:
%p= @client.name
- form_for :client, @client do |c|
= c.label :c.name
= c.text_field :c.name