我正在尝试在单独的控制器中呈现部分表单。
#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? %>
...
但无法停止接收此错误:
未定义的方法`to_key'用于Transaction :: ActiveRecord_Associations_CollectionProxy:0x007fc308301c18
你的意思是? 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
提前谢谢!!我找不到任何解决方案,我已经阅读了大量文档,希望能够解决。
渲染调用的更清晰视图(由@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' %>
显示部分
的清晰视图#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>
答案 0 :(得分:0)
您的问题出在UsersController
。
TransactionsController#create
方法应该没问题,因为您只引用了一个Transaction
。在UsersController
中,您引用了Transactions
current_user
的集合,因此错误。
您应该可以将其更改为
def my_transactions
@transaction = current_user.transactions.build
@user = current_user
end
这种方式@transaction
将是两个上下文中与Transaction
相关联的新current_user
。
您的另一个选择是,如果您显示所有交易并且能够添加新交易,则单独留下UsersController
并将渲染语句更改为:
#app/views/users/my_transactions.html.erb
<%= render 'transactions/form', transaction: @user.transactions.build %>
这将对表单产生与上述相同的效果,但会将@transaction
实例变量保留为Transactions
的集合,以便在该视图上显示。
答案 1 :(得分:0)
我认为问题发生在render
方法:
在这里,您传递的是@transaction
,就好像它是一个对象,但它是一个集合。您应该将收集选项与render
一起使用。像这样:
# app/views/users/my_transactions.html.erb
<%= render partial: 'transactions/form', collection: @transactions %>
有关Rails指南(http://guides.rubyonrails.org/layouts_and_rendering.html)
的第3.4.5节的更多信息