Problem with new action


#1

I’m having issues submitting a form to the create action.

In routes I have

map.resources :encryption_passphrases

This resource is not using an ActiveRecord model, so I can’t use the
form_for method in the view.

In app/views/encryption_passphrases/new.html.erb I have this:

<% form_tag(encryption_passphrases_url, :method => “post”) do |f| %>

<%= password_field_tag :encryption_passphrase %>

<%= submit_tag "Create" %>

<% end %>

This results in the following html:

When I hit the Create button, I get this error on the resulting page:

“Unknown action
No action responded to index”

I don’t know why it’s going to the get http method because it says
post in the form tag.

Can anybody tell me how to fix this?

Thanks,

Jonathan


#2

Try running “rake routes” to see if the URL you get is recognized as a
resource url. Maybe the :controller/:action/:id route outranks your
resources route. The resources route should be specified higher up in
the file.


#3

Christina,

Thanks for the response.

This is what my rake routes command outputs. The
encryption_passphrases resource is at the top of everything in the
application. The :controller/:action/:id route is at the very bottom.

          encryption_passphrases GET    /

encryption_passphrases
{:controller=>“encryption_passphrases”, :action=>“index”}
formatted_encryption_passphrases GET /
encryption_passphrases.:format
{:controller=>“encryption_passphrases”, :action=>“index”}
POST /
encryption_passphrases
{:controller=>“encryption_passphrases”, :action=>“create”}
POST /
encryption_passphrases.:format
{:controller=>“encryption_passphrases”, :action=>“create”}
new_encryption_passphrase GET /encryption_passphrases/
new
{:controller=>“encryption_passphrases”, :action=>“new”}
formatted_new_encryption_passphrase GET /encryption_passphrases/
new.:format
{:controller=>“encryption_passphrases”, :action=>“new”}
edit_encryption_passphrase GET /
encryption_passphrases/:id/edit
{:controller=>“encryption_passphrases”, :action=>“edit”}
formatted_edit_encryption_passphrase GET /
encryption_passphrases/:id/edit.:format
{:controller=>“encryption_passphrases”, :action=>“edit”}
encryption_passphrase GET /
encryption_passphrases/:id
{:controller=>“encryption_passphrases”, :action=>“show”}
formatted_encryption_passphrase GET /
encryption_passphrases/:id.:format
{:controller=>“encryption_passphrases”, :action=>“show”}
PUT /
encryption_passphrases/:id
{:controller=>“encryption_passphrases”, :action=>“update”}
PUT /
encryption_passphrases/:id.:format
{:controller=>“encryption_passphrases”, :action=>“update”}
DELETE /
encryption_passphrases/:id
{:controller=>“encryption_passphrases”, :action=>“destroy”}
DELETE /
encryption_passphrases/:id.:format
{:controller=>“encryption_passphrases”, :action=>“destroy”}
.
.
. {other controllers}
.
/:controller/:action/:id
/:controller/:action/:id.:format

I’ve worked around the issue by causing the index action to call the
create method, but I’d rather have it work as designed…

Any other suggestions?

Thanks,
Jonathan