Използвам релси рядко, така че извинете, ако това е очевидно. Разгледах другите въпроси, работя от Ruby On Rail Guide, и изглежда, че правя това правилно, но все още не мога да накарам локалните си променливи да работят.
todays/show.html.erb
<p>
<strong>Tasks:</strong>
<%= render partial: "next_steps/next_step_today",
collection: @today_lines %>
</p>
next_steps/_next_step_today.html.erb
<p>
<%= render partial: "next_steps/next_step",
locals: {next_step: today_line.next_step} %>
<%= link_to 'x', today_line, method: :delete, data: { confirm: 'Are you sure?' } %>
</p>
next_steps/_next_step.html.erb
<span class="<%= next_step.complete ? "completed_next_step" : ""%> next_step_span_<%= next_step.id%>">
<%= form_for(next_step,
:remote => true,
:html => {:'data-type' => 'json',
:multipart => true,
:id => "edit_next_step_#{next_step.id}_#{rand()}"}
) do |f| %>
<%= f.hidden_field( :id, :value => next_step.id) %>
<%= f.hidden_field( :note_id, :value => next_step.note_id) %>
<%= f.hidden_field( :content, :value => next_step.content) %>
<%= f.hidden_field( :due_date, :value => next_step.due_date) %>
<%= f.check_box( :complete, :class => "next_step_complete_button" ) %>
<%= next_step.content %>
<% end %>
</span>
Знам, че последният частичен _next_step.html.erb
работеше, преди да започна да се опитвам да добавя частични части за допълнителна гъвкавост. Сега изглежда не мога да предам правилно местните.
Предишният ми работен код беше
todays/show.html.erb
<p>
<strong>Tasks:</strong>
<% @today_lines.each do |today_line| %>
<p><%= render today_line.next_step %></p>
<% end %>
</p>
Съобщение за грешка
Грешка в името в днешното#шоу
Показва /.../app/views/next_steps/_next_step_today.html.erb, където ред #3 е повдигнат:
недефинирана локална променлива или метод `today_line' за #‹#:0x007f930adbd860> Извлечен източник (около ред #3):
<p>
<%= render partial: "next_steps/next_step",
locals: {next_step: today_line.next_step} %>
<%= link_to 'x', today_line, method: :delete, data: { confirm: 'Are you sure?' } %>
</p>
Някакви идеи?
РЕДАКТИРАНЕ: ОКОНЧАТЕЛЕН РАБОТЕЩ КОД
todays/show.html.erb
<p>
<strong>Tasks:</strong>
<%= render partial: "next_steps/next_step_today",
collection: @today_lines %>
</p>
_next_step_today.html.erb
<p>
<%= render "next_steps/next_step",
next_step: next_step_today.next_step %>
<%= link_to 'x', next_step_today, method: :delete, data: { confirm: 'Are you sure?' } %>
</p>
collection:
изисква да използвате частичното име на файл за локалната променлива.
Освен това при търсенето си открих, че ако не използвате partial:
, можете също да пропуснете locals:
и вместо това просто да използвате името на променливата, което е по-чисто. Тази промяна е показана в _next_step_today.html.erb
. Иска ми се да мога да назова променливата на колекцията, вместо да използвам частичното име на файла или вместо да използвам всеки, но това е достатъчно близко и работи.