著者は UPS の足場を構築し、レールはモデルをup
ではなくとして作成しましたups
。いくつかのソリューションをハックして機能させましたが、新しいフォームから呼び出されたときに create メソッドを機能させることができません。Rails は index 関数を呼び出しますが、新しいオブジェクトは作成されません。
ups_controller.rb
def create
@up = Ups.new(params[:up])
respond_to do |format|
if @up.save
format.html { redirect_to @up, notice: 'Up was successfully created.' }
format.json { render json: @up, status: :created, location: @up }
else
format.html { render action: "new" }
format.json { render json: @up.errors, status: :unprocessable_entity }
end
end
end
def new
@up = Ups.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @up }
end
end
ups/form.html.erb
<%= form_for(@up) do |f| %>
<table class="table table-striped table-bordered">
<tr>
<th>name</th>
<td><%= f.text_field :name %></td>
</tr>
<tr>
<th>attr</th>
<td><%= f.select :attr_id, options_from_collection_for_select(Attr.order(:name).where(:major => true).all, "id", "name", @up.attr_id) %></td>
</tr>
<tr>
<th>Action</th>
<td><%= f.submit "Submit New UPS" %></td>
</tr>
</table>
<% end %>
ルート.rb
resources :ups
match 'ups/create' => 'ups#create'
match 'ups/index' => 'ups#index'
match 'pdus/link_all_ups' => 'pdus#link_all_ups'
ups_controller の新しいメソッドを呼び出すボタンは次のとおりです。
<%= link_to 'Enter New UPS', new_ups_path, :class => "btn btn-success pull-right" %>
レーキルート
ups GET /ups(.:format) ups#index
POST /ups(.:format) ups#create
new_up GET /ups/new(.:format) ups#new
edit_up GET /ups/:id/edit(.:format) ups#edit
up GET /ups/:id(.:format) ups#show
PUT /ups/:id(.:format) ups#update
DELETE /ups/:id(.:format) ups#destroy
ups_index /ups/index(.:format) ups#index
アドバイスをありがとう。