I'm not sure what version of Rails you're using, looking at your routes
file I'm guessing Rails 2.
You can check if your route exists by entering "rake routes" on the
command line, if your POST route isn't in there is a problem in your
routes file.
I think it's more likely that the problem is in your form though, you have:
<% form_for :allocation, :url => allocations_path do |f| %>
Try changing it to:
<% form_for @allocation do |f| %>
You can find the documentation for form_for in Rails 2.3.8 here:
http://api.rubyonrails.org/v2.3.8/classes/ActionView/Helpers/FormHelper.html#M002270
On 26-1-2011 22:25, Craig Leppan wrote:
Have routes as:
ActionController::Routing::Routes.draw do |map|
map.resources :allocations
map.resources :companies, :has_many => :notes, :shallow => true
map.resources :notes, :only => [:index]
map.suppliers 'suppliers', :controller => "companies", :action =>
"indexs"
map.clients 'clients', :controller => "allocations"
# /companies/:1/allocations
map.allocations 'companies/:id/allocations', :controller =>
"allocations", :action => "show"
map.allocations 'companies/:id/allocations/new', :controller =>
"allocations", :action => "new"
map.namespace :admin do |admin|
admin.resources :users, :roles, :assignments
end
map.login "login", :controller => "user_sessions", :action => "new"
map.logout "logout", :controller => "user_sessions", :action =>
"destroy"
map.resources :user_sessions
map.resources :admin_users
map.resources :admin_roles
map.resources :welcomes
map.resources :users
map.resources :messages
map.resources :companies
map.resources :contacts
map.resources :focs
map.resources :tops
map.resources :products
map.resources :tocs
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
I have a page /allocations/new:
<h1>Allocations for:<%= @company.name %></h1>
<table class="users" border="0" cellpadding="5" cellspacing="1">
<tr class="header">
<th>Product</th>
<th>Quantity</th>
</tr>
<% for allocation in @company.allocations %>
<tr>
<td><%=h allocation.allocated_product.name %></td>
<td><%=h allocation.quantity %></td>
</tr>
<% end %>
</table>
<br>
<p>
<% form_for :allocation, :url => allocations_path do |f| %>
<%= f.hidden_field :company_id, :value => @company.id %>
<%= f.collection_select(:allocated_product_id, Product.find(:all),
:id, :name, :include_blank => false) %>
<%= f.label :quantity %><%= f.text_field :quantity %>
<p><%= submit_tag "Create Allocation" %></p>
<% end %>
When submitting I cannot get the "create" action:
Parameters: {"commit"=>"Create Allocation", "action"=>"new",
"authenticity_token"=>"zpScMwZRZix3Ube1aTbQJplv+ZI0KXpskD7xB4yOo3g=",
"id"=>"1", "allocation"=>{"quantity"=>"34", "allocated_product_id"=>"2",
"company_id"=>"1"}, "controller"=>"allocations"}
I think this is a very silly issue but its making me go in circles:
I have noted that I dont have a POST method in the named routes
"Allocations", has this anything to do with it?
I have tried to mess with the Class HTML when submitting the form but
cant get it to run.
My controller looks as such:
def new
@company = Company.find(params[:id])
@allocation = Allocation.new
end
def create
@allocation = Allocation.new(params[:allocations])
if @allocations.save
flash[:notice] = "Successfully created allocations."
redirect_to new_allocation_path(:company_id)
else
render :action => 'new'
end
end
--
You received this message because you are subscribed to the Google Groups "Ruby on
Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.