Forum: Italian Ruby user group No action responded to create. Actions: index

Posted by fdibe nedetto (fdibenedetto72)
on 2010-08-25 14:48
Salve a tutti,
sto cercando di fare un piccolo gestionale in rails
il mio problema e' questo
nella view index di user
ho questo codice
<head>
  <h2 align="center"> Lista Utenti </h2>
  <div id ="cerca">
    <% form_tag  :action=>'index'  , :method =>'post' do%>
    <%= text_field_tag :search %>
    <%= submit_tag "cerca" , :user =>nil %>
    <% end %>
   </div>
</head>

<table cellpadding="3" cellspacing="0">
  <% for user in @users %>
  <tr>
    <td width="50%">
      <%= user.id %>
    </td>
    <td width="50%">
      <%= user.user %>
    </td>
<% end %>
  </tr>
</table>
nel model ho creato
class User < ActiveRecord::Base
    def self.search(search)
      if search
        find(:all , :conditions =>["user like ?", "&#{search}"] )
      else
        find(:all)
      end
    end
end
nel controller ho definito l'index
  def index
     @users=User.search(params[:search])
  end

se apro la pagina regolarmente http://localohost/user m'indirizza
giustamente nella pagina e tutto funziona ma non appena faccio la provaa
lanciare una ricerca mi dice :

Unknown action
No action responded to create. Actions: index
 mi chiedo come mai visto che l'action index esiste ?
potreste aiutarmi

Grazie
fdibenedetto
Posted by Pietro Giorgianni (giorgian)
on 2010-08-25 14:54
(Received via mailing list)
Il 25 agosto 2010 14:48, Fabio Di benedetto
<f_dibenedetto72@hotmail.com> ha scritto:
> giustamente nella pagina e tutto funziona ma non appena faccio la provaa
> lanciare una ricerca mi dice :
>
> Unknown action
> No action responded to create. Actions: index
>  mi chiedo come mai visto che l'action index esiste ?

Ciao,

quando hai a che fare con controller REST, la differenza tra index e
create non sta nell'url (che è / per entrambi), ma sul method: GET per
index, POST per create.


pietro
Posted by Andrea Pavoni (apeacox)
on 2010-08-25 15:04
(Received via mailing list)
innanzi tutto è errato mettere html in <head>

la form è sbagliata perchè alla URL /users/ col metodo POST è già 
associata la action 'create'. controlla da terminale con il comando rake
routes per vedere le rotte già impostate.

infine, il metodo 'search' nel modello è un po' fuori luogo, è meglio
definire quella logica nella action del controller controller, se poi
devi usarlo in più action dello stesso controller, allora crea un metodo
apposito. se devi usarlo in più controllers, allora potresti metterlo in
application_controller.rb, perchè verrà ereditato.

ciao,
A.


Il 25/08/2010 14:48, Fabio Di benedetto ha scritto:
Posted by fdibe nedetto (fdibenedetto72)
on 2010-08-25 18:31
ciao Andrea ma anche se metto il :method=> 'get'
il risultato nn cambia anche se cambio il nome della action !
 <div id ="cerca">
    <% form_tag  :action=>'index'  , :method =>"GET" do%>
    <%= text_field_tag :search %>
    <%= submit_tag "cerca" , :user =>nil %>
    <% end %>
   </div>

ti posto il risultato del rake
dal risultato del rake capisco che se aggiungo :method=> "get" a dovrei 
andare in index
DEPRECATION WARNING: Rake tasks in vendor/plugins/ext_scaffold/tasks are 
depreca
ted. Use lib/tasks instead. (called from <top (required)> at 
C:/Ruby191/lib/ruby
/gems/1.9.1/gems/rails-2.3.8/lib/tasks/rails.rb:10)
        users GET    /users(.:format) 
{:controller=>"users", :
action=>"index"}
              POST   /users(.:format) 
{:controller=>"users", :
action=>"create"}
     new_user GET    /users/new(.:format) 
{:controller=>"users", :
action=>"new"}
    edit_user GET    /users/:id/edit(.:format) 
{:controller=>"users", :
action=>"edit"}
         user GET    /users/:id(.:format) 
{:controller=>"users", :
action=>"show"}
              PUT    /users/:id(.:format) 
{:controller=>"users", :
action=>"update"}
              DELETE /users/:id(.:format) 
{:controller=>"users", :
action=>"destroy"}

Andrea Pavoni wrote:
> innanzi tutto � errato mettere html in <head>
> 
> la form � sbagliata perch� alla URL /users/ col metodo POST � gi� 
associata la action 'create'. controlla da terminale con il comando rake
> routes per vedere le rotte gi� impostate.
> 
> infine, il metodo 'search' nel modello � un po' fuori luogo, � meglio
> definire quella logica nella action del controller controller, se poi
> devi usarlo in pi� action dello stesso controller, allora crea un metodo
> apposito. se devi usarlo in pi� controllers, allora potresti metterlo in
> application_controller.rb, perch� verr� ereditato.
> 
> ciao,
> A.
> 
> 
> Il 25/08/2010 14:48, Fabio Di benedetto ha scritto:
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.