我有:devices.html.erb
<p id="notice"><%= notice %></p>
<p>
<b>Kategorija:</b>
<%= @device.category.name %>
</p>
<p>
<b>Gamintojas:</b>
<%= @device.manufacturer.name %>
</p>
<p>
<b>Konkurentas:</b>
<%= @device.competitor.name %>
</p>
<p>
<b>Pavadinimas:</b>
<%= @device.name %>
</p>
<p>
<b>Aprašymas:</b>
<%= @device.description %>
</p>
<%= link_to 'Redaguoti', edit_device_path(@device) %> |
<%= link_to 'Atgal', devices_path %>
<div id= "specification_value">
<%= render :partial => "specification_values/specification_values_list", :locals => {:specification_values=>@device.specification_values} %>
</div>
<%= render :partial => "specification_values/new_specification_value", :locals=>{:specification_value=>SpecificationValue.new(:device_id=>@device.id)} %>
有2个部分,第一个_specification_values_list
<table>
<tr>
<th>Device</th>
<th>Specification</th>
<th>Value</th>
<th></th>
<th></th>
<th></th>
</tr>
<% specification_values.each do |specification_value| %>
<tr>
<td><%= specification_value.device_id %></td>
<td><%= specification_value.specification_id %></td>
<td><%= specification_value.value %></td>
<td><%= link_to 'Show', specification_value %></td>
<td><%= link_to 'Edit', edit_specification_value_path(specification_value) %></td>
<td><%= link_to 'Destroy', specification_value, :confirm => 'Are you sure?', :method => :delete, :remote=>true %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Specification value', new_specification_value_path %>
和:_new_specification_value
<h1>New specification_value</h1>
<%= form_for(specification_value, :remote => true) do |f| %>
<% if specification_value.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(specification_value.errors.count, "error") %> prohibited this specification_value from being saved:</h2>
<ul>
<% specification_value.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :device_id %><br />
<%= f.text_field :device_id %>
</div>
<div class="field">
<%= f.label :specification_id %><br />
<%= f.text_field :specification_id %>
</div>
<div class="field">
<%= f.label :value %><br />
<%= f.text_field :value %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<%= link_to 'Back', specification_values_path %>
我有jquery里面,我想做,当我添加新的specification_value时,它将在部分列表中与ajax在devices.html.erb中出现。谢谢。
答案 0 :(得分:0)
我使用ajax使用以下代码渲染部分:
在你的主文件中输入:
<div id="phone_numbers">
<%= render @phone_number, :phone_types => PhoneNumbersHelper::phone_types %>
</div>
<%= link_to_function "Add Number", do |page|
partial = escape_javascript( render PhoneNumber.new, :phone_types => PhoneNumbersHelper::phone_types )
page << "$('#phone_numbers').append(\"#{partial}\")"
end %>
当您点击“添加号码”时,将生成“_phone_number”并将其加载到ID为“phone_numbers”的div中
在我的部分中我有:
<div class="phone_number">
<%= fields_for 'location[numbers][]', phone_number do |f| %>
<div class="field">
<%= f.label "Phone Number" %><br/>
+(<%= f.text_field :code, :class => 'phone_code' %>)-
<%= f.text_field :number, :class => 'phone_number' %>
<%= f.select :ptype, phone_types %>
</div>
<% end%>
</div>
我有'location [numbers] []'的原因是因为我在Location模型的视图中使用_phone_number partial。我的位置模型具有以下内容:
attr_accessor :numbers
这允许位置[数字]设置“数字”访问者。 我们在[location]之后有[]的原因是允许将多个电话号码传递给模型。
此外,您需要在位置模型
中保存before_save中的电话号码before_save :save_numbers
def save_numbers
unless numbers.nil?
numbers.each do |n|
unless n[:number].nil? || n[:code].nil? || n[:number].blank? || n[:code].blank?
phone_numbers.build(n)
end
end
end
end
我的模特位置也有_many:phone_numbers;这解释了phone_numbers.build
现在到控制器:
def new
1.times { @location.phone_numbers.build }
@phone_numbers = @location.phone_numbers
@phone_number = @phone_numbers[0]
end
请注意,在上面的代码中我使用了@phone_number,我传递给了我的渲染部分。 Rails 3支持集合,这意味着,如果你想要创建默认的很多电话号码,你可以将@phone_numbers传递给render部署方法,rails会自动生成多个电话号码!
我希望这会有所帮助...... =)