Aquí está la llamada en el archivo application.html.erb
:Problema representación parcial en el diseño de la aplicación (rieles)
<%= render :partial => 'tasks/_new' %>
Aquí está el parcial que se queden (_new.html.erb
):
<% form_for @task do |f| -%>
<%= f.text_field :body %>
<%= submit_tag "Submit" %>
<% end -%>
Aquí es el método en el ' controlador de tareas:
def new
@task = Task.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @task }
end
end
Aquí está el mensaje de error que sigo recibiendo:
Missing template tasks/__new.erb in view path app/views
y dice que el error está en esta línea:
<%= link_to "tasks", tasks_path %> <%= render :partial => 'tasks/_new' %>
El archivo está en el directorio correcto. Lo extraño es que hay un extra _
en el nombre del archivo, en el error. Cuando ceder y cambiar el nombre del parcial a __new.erb
, aquí está el error que consigo:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
Y dice que el error está en esta línea:
<% form_for @task do |f| -%>
También había intentado sin el _
en el código, como sugirió Petros, pero devuelve el mismo error que el anterior, Called id for nil…
.
¿Qué está pasando?
Disculpa, debería haberlo especificado. Intenté eso también. Devolvió el error "identificó id for nil". Voy a arreglar el OP. –
Puede intentar <% = render: partial => 'tasks/new', locals => {: task => @task}%> ... Es posible que necesite cambiar @task a la tarea en su código parcial o agregar en la parte superior de la tarea parcial <% @task = task if @task == nil%> – Petros
Intenté hacer que eso funcionara pero no pude. Me ayudaste a darme cuenta de que el problema era que no había ninguna instancia de '@task' llegando al diseño de la aplicación, ya que está vinculada al controlador de tareas, así que probé "<% form_for Task.new do | f | -%>" y funcionó. Pero se siente como un truco. ¿Es el enfoque correcto? –