Aggiungere una action

Ciao a tutti,
Vorrei aggiungere una action al mio controller completa di view.

Per la precisione vorrei aggiungere la action “close” e ho provato in
questo
modo:

  1. Al controller ho aggiunto il metodo close
  2. Fra le view del controller ho aggiunto il file close.html.erb
  3. Al route.rb ho aggiunto: match ‘controller/close’ =>
    ‘controller#close’

Mi ritrovo però ad essere rediretto sulla show quando clicco su un link
impostato come:
link_to ‘Close’, { :controller => :controller, :action => :close }

C’è forse un conflitto di rotte?

Inoltre vorrei che rispondesse al path ~/controller/close/n come posso
fare?

Grazie a tutti

per ottenere esattamente quello che hai chiesto, puoi definire la rotta
in
questo modo:

get ‘/controller/close/:n’ => ‘controller#close’, :as =>
:controller_close

e usarla nelle view con il suo nome:

link_to ‘Close’, controller_close_path(qui_metti_il_parametro_n)

nel controller, potrai leggere il parametro con params[:n]

se vuoi cambiare il nome del parametro, da “n” a qualcosa di pi
autoesplicativo
(tipo “id”), ti baster cambiare il suo nome nella rotta.

qui troverai una manciata di guide introduttive che potresti ritenere
utili:

ciao,
A.

Il 25/10/2011 14:27, Nimbuzz 77 ha scritto:

Ti ringrazio, le tue indicazioni sono state precise.

Grazie.

Se stai gestendo la risorsa, es:
resources :articles

c’è un modo ancora più semplice:

resource :articles do
get :close
end

otterrai la seguente rotta:
article_close GET /articles/:article_id/close(.:format)

nel controller:

def close
article = Article.find params[:article_id]
article.close
redirect_to article, :notice => “Article has been closed succesfully”
end