Я пытаюсь отобразить форму частично в отдельном контроллере.Рендеринг формы partials - undefined метод `to_key '
#app/views/users/my_transactions.html.erb
<%= render 'transactions/form', transaction: @transaction %>
Форма страницы.
#app/views/transactions/_form.html.erb
<%= form_for(transaction) do |f| %>
<% if transaction.errors.any? %>
...
Но не может остановить получаю эту ошибку:
undefined method `to_key' for Transaction::ActiveRecord_Associations_CollectionProxy:0x007fc308301c18
Did you mean?
to_query
to_set
to_ary
Мои контроллеры:
#app/controllers/transactions_controller.rb
def create
@transaction = Transaction.new(transaction_params)
@transaction.user = current_user
...
и
#app/controllers/users_controller.rb
def my_transactions
@transaction = current_user.transactions
@user = current_user
end
Спасибо заранее !! Я не могу найти решения для этого, и я уже прочитал хороший кусок документации в надежде на разрешение.
Редактировать
Clearer вид визуализации вызовов (с исправлением по @engineersmnky)
#app/views/users/my_transactions.html.erb
<h3>New Transaction</h3>
<%= render 'transactions/form', transaction: @user.transactions.build %>
<h3>Current Transactions</h3>
<%= render 'transactions/show' %>
Clear вид шоу частичное
#app/views/transactions/_show.html.erb
<% @user.transactions.each do |transaction| %>
<tr>
<td class="date"><%= transaction.created_at.strftime("%D") %></td>
<td><%= transaction.amount %></td>
<td class="convert-category"><%= transaction.category %></td>
<td class="convert-sub-category"><%= transaction.sub_category %></td>
<td><%= transaction.notes%></td>
Вариант 2 работает, когда я изменить порядок # приложение/просмотров/пользователей/my_transactions.html.erb для отображения текущих операций наверху через транзакции <% render '/ show'%>, но я хочу, чтобы дисплей отображал новый частичный, а затем частичный показ.Я знаю, что это имеет какое-то отношение к обработке переменных экземпляра для рендеринга формы до частичного отображения. Для справки, _show.html.erb начинается с <% @ user.transactions.each do | transaction | %> – jcxswc
@jcxswc Вы комментируете очень неясно. Если вы хотите показать частичное ниже формы, просто добавьте '<% = render 'transaction/show'%>' после '<% = render 'transaction/form', transaction: @ user.transactions.build%>', но я бы предположили, что «TransactionsController # show» предназначалось для представления RESTful одной транзакции с таким путем, как «/ transaction /: id» – engineersmnky
Извините за отсутствие ясности. Через частичное _show.html.erb прямо под _form.html.erb, я показываю полный список транзакций. Таким образом, пользователь может добавить транзакцию в верхней части веб-страницы, но также может просматривать ВСЕ транзакции внизу. В _show.html.erb мой запуск каждого цикла - это <% @ user.transactions.each do | transaction | %> – jcxswc