Size: a a a

2020 September 26

А

Артур in RubyRush
Тут в первом случае index - коллекция книг и внтури все переменные локальные, а во втором - show, одна инстанс переменная с одной книгой.
источник

Э

Эдем in RubyRush
В паршиалы можно прокидывать локальные переменные
источник

DM

Dmitriy Tensei Malys... in RubyRush
гугли partial rails views
источник

А

Артур in RubyRush
А прокидывать их как локальные или как инстанс нужно? У меня так не получилось:
 <% @books.map do |book| %>
     <%= render "shared/list_books", book: @book %>
 <% end %>

Зато вот так работает, но чет так себе код:

 <% @books.map do |book| @book = book %>
     <%= render "shared/list_books", book: @book %>
 <% end %>
источник

Э

Эдем in RubyRush
Прокидывать только локальные
источник

Э

Эдем in RubyRush
(если вопрос о том, какие переменные использовать в паршиалах)
источник

DM

Dmitriy Tensei Malys... in RubyRush
Артур
А прокидывать их как локальные или как инстанс нужно? У меня так не получилось:
 <% @books.map do |book| %>
     <%= render "shared/list_books", book: @book %>
 <% end %>

Зато вот так работает, но чет так себе код:

 <% @books.map do |book| @book = book %>
     <%= render "shared/list_books", book: @book %>
 <% end %>
Ты же partial внутри блока зовешь, у тебя там местнаяя переменная book есть, которую и надо в него передать
источник

А

Артур in RubyRush
Вот так работает:

<% @books.map do |book| %>
     <%= render "shared/list_books", book: book %>
 <% end %>

А нужно ещё чтобы

<%= render "shared/list_books", @book book %>

Как-то инстанс нужно преварить в локальную и прокинуть в паршиал.
источник

А

Артур in RubyRush
Попробую слегка расписать что к чему. Есть экшн:

 def show
   @book = Book.find(params[:id])
 end

Он передает во вьюху show инстансную переменную @book.

Во вьюхе show у меня <%= render "shared/list_books" %> и вот в этот паршиал list_books мне нужно передать содержимое @book.

В самом list_books у меня все вызовы локальной book: (<td><%= book.name %></td>
<td><%= book.description %></td> и т.д.)

Вот собственно и вопрос что указать в параметрах <%= render "shared/list_books" %> чтобы @book из экшена сделать book в паршиале.
источник

S

Sergey in RubyRush
Артур
Попробую слегка расписать что к чему. Есть экшн:

 def show
   @book = Book.find(params[:id])
 end

Он передает во вьюху show инстансную переменную @book.

Во вьюхе show у меня <%= render "shared/list_books" %> и вот в этот паршиал list_books мне нужно передать содержимое @book.

В самом list_books у меня все вызовы локальной book: (<td><%= book.name %></td>
<td><%= book.description %></td> и т.д.)

Вот собственно и вопрос что указать в параметрах <%= render "shared/list_books" %> чтобы @book из экшена сделать book в паршиале.
источник

А

Артур in RubyRush
Кроч ну его все в болото, в паршиале добавил <% book = @book unless @book.nil? %> и все норм стало
источник

Э

Эдем in RubyRush
Дело хозяйское, но инстанс-переменные в паршиалах не принято делать, может потом больно сделать
Инстанс-переменные только для вьюх
источник

А

Артур in RubyRush
Ну вот не могет оно и все. Из доки все перепробовал.
источник

А

Артур in RubyRush
источник

А

Артур in RubyRush
источник

А

Артур in RubyRush
источник

А

Артур in RubyRush
источник

S

Sergey in RubyRush
Артур
Ну вот не могет оно и все. Из доки все перепробовал.
locals: { book: @book }
источник

А

Артур in RubyRush
Sergey
locals: { book: @book }
источник

А

Артур in RubyRush
В этом случае работает show, но для index падает
источник