2012-12-03 55 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