2012-12-03 25 views
0

當使用一個html.erb頁的form_for助手,工作很多被抽象爲你,所以像紅寶石形式和符號

f.label :book 

被變成了一個HTML標籤。我想用一個字符串填充一個文本字段,以便我可以將與幾個符號關聯的值,形成一個字符串,並將該字符串放入:value鍵中。

<%= form_for(@backpack) do |f| %> 
    <ul> 
    <% @backpack.errors.full_messages.each do |error| %> 
     <li><%= error %></li> 
    <% end %> 
    </ul> 
    <p> 
    <%= f.label :calculator %><br/> 
    <%= f.text_field :calculator %> 
    </p> 
    <p> 
    <%= f.label :lunchbox %><br/> 
    <%= f.text_field :lunchbox %> 
    </p> 
    <%= f.label :books %><br/> 
    </p> 
    <%= f.fields_for :books do |g| %> 
     <p> 
     <%= g.text_field :book, :value => MY_STRING %> 
     </p> 
    <% end %> 
    </p> 
    <p> 
    <%= f.submit %> 
    </p> 
<% end %> 

MY_STRING =:稱號:作者

所以,如果我離開獨自g.text_field:書,它會自動填充與該符號相關聯的的字符串中。我如何以我自定義的方式來實現?符號如何在我的嵌套表單中引用實際數據?

我還要提到我在我的揹包控制器

accepts_nested_attributes_for :books 

屬性,所以我有機會獲得第二個模型/數據庫

回答

2

符號只是一個符號。沒有直接連接到對象。但是你可以使用連接到表單生成器的書對象來創建一個描述這本書的字符串:

<%= g.text_field :book, :value => "#{g.object.title} by #{g.object.author}" %> 

更妙的是,你可以寫一個助手來處理這對你:

# in backpacks_helper.rb 
def book_title(book) 
    "#{book.title} by #{book.author}" 
end 

而且使用它是這樣的:

<%= g.text_field :book, :value => book_title(g.object) %> 
+0

我有一個答案,但它是錯的。這個是正確的(有一個小錯字,我將編輯。 –

+0

這工作。我想我的主要問題是,我不知道如何訪問不同的模型(.object)。謝謝! – shawalli

+0

@shawalli你打賭!好運氣與你的項目。 – rjz