Ecco la chiamata nel file application.html.erb
:problema di rendering parziale del layout dell'applicazione (Rails)
<%= render :partial => 'tasks/_new' %>
Ecco il parziale in fase di rendering (_new.html.erb
):
<% form_for @task do |f| -%>
<%= f.text_field :body %>
<%= submit_tag "Submit" %>
<% end -%>
Ecco il metodo nel ' controller delle attività:
def new
@task = Task.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @task }
end
end
Ecco il messaggio di errore che continuo a ricevere:
Missing template tasks/__new.erb in view path app/views
e si dice che l'errore è in questa linea:
<%= link_to "tasks", tasks_path %> <%= render :partial => 'tasks/_new' %>
Il file si trova nella directory giusta. La cosa strana è che nel nome del file c'è un _
in piùnell'errore. Quando mi arrendo e rinominare il parziale __new.erb
, ecco l'errore che ottengo:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
E dice l'errore è in questa linea:
<% form_for @task do |f| -%>
avevo anche provato senza la _
in il codice, come suggerito da Petros, ma restituisce lo stesso errore di sopra, Called id for nil…
.
Cosa sta succedendo?
Siamo spiacenti, avrei dovuto specificare. Ci ho provato anche io. Ha restituito l'errore "chiamato id per nil". Sistemerò l'OP. –
Puoi provare <% = render: partial => 'tasks/new', locals => {: task => @task}%> ... Potrebbe essere necessario cambiare @task in task nel tuo partial o aggiungere codice a la parte superiore del fare parziale <% @task = task if @task == nil%> – Petros
Ho provato a farlo funzionare ma non ho potuto. Mi hai aiutato a capire che il problema era che non c'era alcuna istanza di '@task' che raggiungesse effettivamente il layout dell'applicazione, poiché è associato al controller delle attività, quindi ho provato "<% form_for Task.new do | f | -%>" e ha funzionato. Ma sembra un po 'come un hack. È l'approccio giusto? –