我在touch_books_controller
中創建purchase_package
的對象,然後呈現build_purchase_package
表單。如何指定哪個對象在窗體中張貼在導軌上
touch_books_controller.rb
if @@wizard == true
create_pricings(@touch_book)
format.html { render :build_purchase_package }
else
format.html{ render :show}
end
def create_pricings(touch_book)
@price = Pricing.new(touch_book_id: @touch_book.id)
@price.save!
@purchase_package = PurchasePackage.new
end
def build_purchase_package
@@wizard = false
end
形式將張貼到create
動作在purchase_package_controller
形式
<%= simple_form_for(@purchase_package, wrapper: :vertical_input_group,
wrapper_mappings: {
check_boxes: :horizontal_radio_and_checkboxes,
radio_buttons: :horizontal_radio_and_checkboxes,
file: :horizontal_file_input}) do |f| %>
<% if @purchase_package.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@purchase_package.errors.count, "error") %>
prohibited this touch_book from being saved:</h2>
<ul>
<% @purchase_package.errors.full_messages.each do |message| %>
<br/>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<% if !(@price.nil?) %>
<%= hidden_field_tag :price_id, @price.id %>
<% end %>
<div class="form-inputs">
<br/>
<%= f.label 'Select one' %>
<br/>
<input id="new" type="radio" value="new" checked="checked"/>New
<br/>
<input id="existing" type="radio" value="new" />Existing
<br/>
<br/>
<div class="existing" style="display: none">
Choose existing package
<%= f.collection_select :id, PurchasePackage.order(:id), :id, :title%>
<%#*post the package selected from the dropdown above%>
<br/>
<br/>
</div>
<div class="new">
<%= f.input :title %>
<br/>
<br/>
<br/>
<%= f.input :price_tier_id %>
<br/>
<br/>
<br/><br/>
<div class="row">
<div class="col-md-5">
<%= f.input :start_date %>
</div>
<div class="col-md-5">
<%= f.input :end_date %>
</div>
<br/>
<div class="col-md-5">
<%= f.input :iap_product_identifier %>
</div>
</div>
<br/>
<%= f.input :published %>
</div>
<%= simple_fields_for(@touch_book) do |t| %>
<%= t.input :previewable_pages %>
<%end%>
<br/>
<div class="submit-btn">
<%= f.submit :Submit, class: 'btn btn-primary' %>
</div>
<%end%>
我想張貼用戶從選擇現有包在表單中下拉。
需要牢記的一點是,您不會從表單中發佈**對象**,您只需發佈**參數**,即簡單的文本位。通常,如果你想讓用戶選擇一個包,那麼你將有一個名爲「package_id」的選擇,或者可能是「purchase_package [package_id]」,如果「package_id =」是一個你想在PurchasePackage對象上調用的方法,在控制器中。 –