Вот вызов в файле application.html.erb
:Проблемы рендеринг частичными в макете приложения (Rails)
<%= render :partial => 'tasks/_new' %>
Вот частичный визуализируемый (_new.html.erb
):
<% form_for @task do |f| -%>
<%= f.text_field :body %>
<%= submit_tag "Submit" %>
<% end -%>
Вот метод в " диспетчер задач:
def new
@task = Task.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @task }
end
end
Вот сообщение об ошибке, которое я продолжаю получать:
Missing template tasks/__new.erb in view path app/views
И это говорит ошибка в этой строке:
<%= link_to "tasks", tasks_path %> <%= render :partial => 'tasks/_new' %>
Файл находится в нужном каталоге. Странно то, что в файле есть _
в названии файла. Когда я сдаюсь и переименовать неравнодушен к __new.erb
, вот ошибка я получаю:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
И это говорит ошибка в этой строке:
<% form_for @task do |f| -%>
Я также попытался без _
в код, как предложил Петрос, но он возвращает ту же ошибку, что и выше, Called id for nil…
.
Что происходит?
Извините, я должен был указать. Я тоже это пробовал. Он вернул ошибку «id id для nil». Я собираюсь исправить ОП. –
Можете ли вы попробовать <% = render: partial => 'tasks/new', locals => {: task => @task}%> ... Возможно, вам придется изменить @task на задачу в частичном или добавить код в верхняя часть частичного выполнения <% @task = task, если @task == nil%> – Petros
Я пытался сделать эту работу, но не смог. Вы помогли мне понять, что проблема заключалась в том, что не было экземпляра «@task», фактически достигающего макета приложения, поскольку он связан с контроллером задач, поэтому я попробовал «<% form_for Task.new do | f | -%>» и это сработало. Но это похоже на хак. Правильно ли это? –