2010-03-23 63 views
2

我是ruby和rails的新手,我从Beggining Ruby on Rails电子商务中遇到问题。 (是的,这是一本旧书)。在rails中转换form_tag的问题

我有这2个代码集视图:

new.html.erb:

<%= form_tag :action=> 'create' do -%> 
<%= render :partial => 'form' %> 
<%= submit_tag 'Create' %> 
<%= end -%> 

<% link_to 'Back', :action => 'index' %> 

_form.html.erb:

<% error_messages_for 'supplier' %> 

<p><label for="supplier_first_name">First Name</label><br/> 
<%= text_field 'supplier', 'first_name' %></p> 

<p><label for="supplier_last_name">Last Name</label><br/> 
<%= text_field 'supplier', 'last_name' %></p> 

,但它不会显示虽然我添加了do选项。它不断给我这个错误:

C:/rails/emporium/app/views/admin/supplier/new.html.erb:1: syntax error, unexpected ')' 
...orm_tag :action=> 'create' do).to_s) 
...        ^
C:/rails/emporium/app/views/admin/supplier/new.html.erb:4: syntax error, unexpected keyword_end 
; @output_buffer.concat((end).to_s) 
          ^
C:/rails/emporium/app/views/admin/supplier/new.html.erb:5: syntax error, unexpected tIVAR, expecting ')' 
@output_buffer.concat "\n" 
      ^
C:/rails/emporium/app/views/admin/supplier/new.html.erb:7: syntax error, unexpected keyword_ensure, expecting keyword_end 
C:/rails/emporium/app/views/admin/supplier/new.html.erb:9: syntax error, unexpected $end, expecting ')' 

任何人都可以建议我如何解决这个问题,因为我还没有找到一个谷歌的答案。

感谢

吉格

回答

5

看起来你有<%= %><% %>在好几个地方混了。您需要使用<% %>form_tag<%= %>link_toerror_messages_for。后两种方法返回它们的输出,而form_tag会自动将其输出附加到输出缓冲区(对于任何接受块的帮助程序而言通常都是如此)。

试试这个:

new.html.erb:

<% form_tag :action => create do %> 
<%= render :partial => "form" %> 
<%= submit_tag "Create" %> 
<% end %> 

<%= link_to "Back", :action => "index" %> 

_form.html.erb:

<%= error_messages_for :supplier %> 
+0

喜托德, 感谢堆栈。它按照你的说法工作。有趣的是,这本书并没有像这样,必须是旧版本的Rails。 G – Gigg 2010-03-24 11:02:51