Oto rozmowa w pliku application.html.erb
:Problem renderowania częściowe w układzie aplikacji (Rails)
<%= render :partial => 'tasks/_new' %>
Oto częściowy są renderowane (_new.html.erb
):
<% form_for @task do |f| -%>
<%= f.text_field :body %>
<%= submit_tag "Submit" %>
<% end -%>
Oto sposób w ' kontroler zadań:
def new
@task = Task.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @task }
end
end
Oto komunikat o błędzie, który otrzymuję:
Missing template tasks/__new.erb in view path app/views
A ona mówi, że jest błąd w tej linii:
<%= link_to "tasks", tasks_path %> <%= render :partial => 'tasks/_new' %>
Plik jest w odpowiednim katalogu. Dziwne jest to, że w nazwie pliku jest extra _
w błędzie. Kiedy daję i zmienić nazwę częściowym __new.erb
, tu jest błąd pojawia się:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
A ona mówi, że błąd jest w tym wierszu:
<% form_for @task do |f| -%>
ja również próbował bez _
w kod, jak sugerował Petros, ale zwraca ten sam błąd co powyżej, Called id for nil…
.
Co się dzieje?
Przepraszam, powinienem był podać. Próbowałem też tego. Zwrócił błąd "named id for zero". Naprawię OP. –
Czy możesz spróbować <% = renderuj: częściowe => "zadania/nowe", locals => {: task => @task}%> ... Być może będziesz musiał zmienić @task na zadanie w swoim kodzie częściowym lub dodać na szczyt częściowego wykonania <% @task = zadanie, jeśli @task == zero%> – Petros
Próbowałem wykonać tę pracę, ale nie mogłem. Pomogłeś mi zrozumieć, że problem polegał na tym, że "przypadek" @task nie dotarł do układu aplikacji, ponieważ jest związany z kontrolerem zadań, więc spróbowałem "<% form_for Task.new do | f | -%>" i zadziałało. Ale to trochę przypomina hak. Czy to właściwe podejście? –