下面是我在我的一個應用程序中使用的基本方法。問題有很多答案 - 問題是文件,答案是嵌入文件。您可以使用「添加答案」鏈接生成另一個答案字段,並使用「刪除」鏈接刪除一個。
_form.html.erb:
<% form_for @problem do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :content %><br />
<%= f.text_area :content, :size => '50x7' %>
</p>
...etc...
<%= add_answer_link "(add answer)" %>
<div id="answers">
<%= render :partial => 'answer', :collection => @problem.answers %>
</div>
<p><%= f.submit "Submit" %></p>
<% end %>
_answer.html.erb:
<div class="answer">
<% fields_for 'problem[answers]', answer, :index => nil do |f| -%>
<%= f.label :content, "Answer #{answer.id}:" %>
<%= f.text_field :content, :size => 50 %>
<%= link_to_function "(remove)", "$(this).up('.answer').remove()" %>
<% end -%>
</div>
problems_helper.rb
module ProblemsHelper
def add_answer_link(name)
link_to_function name do |page|
page.insert_html :bottom, "answers", :partial => 'answer', :object => Answer.new
end
end
end
我剪下實施的幾個小位,但這應該起作用。
感謝您的幫助,這給了我一些想法。我想知道你的控制器可能是什麼樣子。 MongoMapper是否處理所有的映射,你做了別的什麼? 謝謝! – 2010-03-26 20:05:03
沒有 - 典型的腳手架控制器,在模型中沒有特別的代碼,和vanilla MongoMapper 0.7.0。 – PreciousBodilyFluids 2010-03-26 20:09:18
非常感謝,今晚我會試試這個。 – 2010-03-26 20:12:16