2012-03-18 188 views
3

我使用下面的格式在Rails 3.2中創建了一個表單,但是當我打開發布視圖時,我沒有看到允許我發表評論的表單。什麼可能是錯的?創建表單(Ruby on Rails)

<%= form_tag(:controller => "posts", :action => "create") do %> 
    <%= label_tag(:message, "What are you doing?") %><br /> 
    <%= text_area_tag(:message, nil, :size => "44x6") %><br /> 
    <%= submit_tag("Update") %> 
<% end %> 

回答

4

在Rails 3 form_ *助手返回的標記,而不是直接將其輸出。變化:

<% form_tag(:controller => "posts", :action => "create") do %> 

到:

<%= form_tag(:controller => "posts", :action => "create") do %> 
+0

你是完全正確的 – 2012-03-18 23:23:44

+0

但我可以使用類似'<%= form_remote_tag(:controller =>「posts」,:action =>「create」)do%>,這會引發錯誤 – 2012-03-19 00:01:24

+1

'form_remote_tag'在rails3中刪除。相反,你可以通過':remote => true'到form_tag:'<%= form_tag {:controller =>「posts」,:action =>「create」},:remote => true做%>' – pjumble 2012-03-19 00:47:44

0

檢查您的路線文件,並確保它是正確的。並且在你的第一行做一個=登錄。認爲可以工作。但是,當你有資源的形式,推薦使用的form_for:

<% form_for @posts.each do |p| %> 
<%= p.label :message %><br /> 
<%= p.text_area :message, nil, :size => "44x6" %><br /> 
<%= submit_tag("Update") %> 
<% end %> 

此外,避免< BR />。使用CSS(divs,classes等)設置你的表單樣式。當然,你將不得不作出@posts變種在你的控制器爲此工作:

@posts = Post.all 

希望這有助於

+0

錯誤我用你的例子得到的是'未定義的方法'MODEL_NAME」的枚舉:行Class' 1 – 2012-03-18 23:16:26

+0

也許添加等號這樣<%=的form_for @ posts.each do | p | %> – oFca 2012-03-18 23:17:58