# Render :action form\_tag

**URL:** <https://www.ruby-forum.com/t/render-action-form-tag/207306>\
**Category:** IT\
**Created:** [May 23, 2011, 1:30pm UTC](https://www.ruby-forum.com/t/render-action-form-tag/207306 "2011-05-23T13:30:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [May 23, 2011, 1:30pm UTC](https://www.ruby-forum.com/t/render-action-form-tag/207306/1 "2011-05-23T13:30:35Z")

</div>

Salve a tutti,  
avrei bisogno di una dritta, non sono un grande esperto  
di Rails e non capisco se sbaglio la sintassi o proprio il procedimento.

Nella vista index voglio visualizzare i topic di una discipline (da  
selezionare):  
ho pensato di fare un render nella action index a selectdiscipline per  
poi tornare e visualizzare i topics.

topics\_controller.rb  
…  
def index  
@disciplines = Discipline.find(:all, :order =\> “denomination”)  
render :action =\> ‘selectdiscipline’

```
@cod = params[:coddiscipline]
@discipline = Discipline.find(@cod)
@topics = Topic.find :all, :order => "denomination", :conditions =>

```

[“discipline\_id = ?”, @discipline.id]  
end

selectdiscipline.html.erb  
  
\<%= form\_tag({:action =\> ‘index’}, :remote =\> true) do %\>

materia:   
  
  
\<% for discipline in @disciplines %\>  
\<option value= “\<%= h discipline.id %\>” **\<%= h  
discipline.denomination %\>**   
\<% end %\>

  

\<%= submit\_tag " Visualizza MODULI " %\>

  
\<% end %\>  

… invece non mi fa selezionare alcunché e mi scrive:

ActiveRecord::RecordNotFound in TopicsController#index

Couldn’t find Discipline without an ID

Rails.root: C:/verifiche  
Application Trace | Framework Trace | Full Trace  
app/controllers/topics\_controller.rb:24:in `index’

Grazie a chi ci darà un’occhiata!

---

<div class="post-metadata">

**Author:** ![magpie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/45deac/32.png) [@magpie](https://www.ruby-forum.com/u/magpie)\
**Post date:** [May 23, 2011, 1:54pm UTC](https://www.ruby-forum.com/t/render-action-form-tag/207306/2 "2011-05-23T13:54:35Z")

</div>

La action del controller unica?  
Dovresti spezzarla in 2: una che torna l’elenco delle discipline e  
l’altra che dopo la selezione della disciplina visualizza i topic.

Per come l’hai scritta tu esegue entrambe nell’index…e la parte che  
recupera il topic non funziona…infatti li che da errore:

# qui params vuoto!

@cod = params[:coddiscipline]  
@discipline = Discipline.find(@cod)  
@topics = Topic.find :all, :order =\> “denomination”, :conditions =\>  
[“discipline\_id = ?”, @discipline.id]

ciao

---

<div class="post-metadata">

**Author:** ![magpie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/45deac/32.png) [@magpie](https://www.ruby-forum.com/u/magpie)\
**Post date:** [May 23, 2011, 8:02pm UTC](https://www.ruby-forum.com/t/render-action-form-tag/207306/3 "2011-05-23T20:02:41Z")

</div>

Ciao Emanuele, GRAZIE MILLE!

ho separato il controller così:

# Memorizza tutti i moduli inseriti e seleziona la disciplina

def index  
@disciplines = Discipline.find(:all, :order =\> “denomination”)  
render :action =\> ‘selectdiscipline’  
end

# visualizza i moduli della disciplina selezionata

def index2  
@cod = params[:coddiscipline]  
@discipline = Discipline.find(@cod)  
@topics = Topic.find :all, :order =\> “denomination”, :conditions =\>  
[“discipline\_id = ?”, @discipline.id]  
end

ed in ‘selectdiscipline.html.erb’ ho scritto:

\<%= form\_tag({:action =\> ‘index2’}, :remote =\> true) do %\>

però adesso mi dà:

“No route matches {:action=\>“index2”, :controller=\>“topics”}”

(in route.rb ho scritto “resources :topics”)  
qualche altro suggerimento? 😉

---

<div class="post-metadata">

**Author:** ![magpie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/45deac/32.png) [@magpie](https://www.ruby-forum.com/u/magpie)\
**Post date:** [May 24, 2011, 3:57pm UTC](https://www.ruby-forum.com/t/render-action-form-tag/207306/4 "2011-05-24T15:57:47Z")

</div>

Ho risolto mettendo in routes.rb

post ‘topics/index2’

Grazie ancora!
