我对 Ruby 和 Rails 很陌生,遇到了一个我似乎无法解决的问题:
在我的 Rails 应用程序中,我的用户在名为 home 的索引站点上显示了几个事件。
如果用户想要为这些事件“添加书签”,他可以单击事件旁边的按钮并将其添加到他的 event_items 列表中,这只是我为用户和事件之间的关联而实现的“关联”控制器(例如 users has_many事件,反之亦然)
这一切都很好,这就是我实现添加功能的方式:
主页的 index.html.erb 提取:
<h2>Events</h2>
<% @events.each do |event| %>
<div><%= event.eventtitle %></div>
<%= button_to 'Add Event', event_items_path(event_id: event, user_id: session[:user_id]) %>
<% end %>
button_to 方法可以很好地将事件添加到 event_item 列表,该列表仅记录 user_id 和 event_id 在 even_items 数据库表中的关联。
现在我想允许用户在 event_items 数据库表中添加对事件的评论。
我似乎找不到将 text_field 值传递给我的 event_items_path 以将注释添加到数据库中的 event_items 表的方法。
我想我不能再使用“button_to”方法了,因为它是以自己的形式解析的,因此我无法传输任何 text_field 信息。所以我创建了一个新表单......我无法让这个表单将 text_field 信息作为参数传递:
用于主页的新 index.html.erb 提取:
<h2>Events</h2>
<% @events.each do |event| %>
<%= form_for :event_items, url: event_items_path(event_id: event, user_id: session[:user_id]) do |f| %>
<div><%= event.eventtitle %></div>
<%= f.label :event_comment %><br />
<%= f.text_field :event_comment %>
<%= f.submit %>
<% end %>
<% end %>
当我按下提交按钮时,它仍然在我的数据库表中创建 event_item,但没有 event_comment。在我的浏览器中检查帖子传输,它似乎没有传输:event_comment。
它只能访问参数中的 :event_id 和 :user_id 。
我将不胜感激任何帮助!
更新
我刚刚意识到,当从我的新表单上方按下提交按钮时,:event_comment 确实会与表单一起传输。
在 Chromes DevTools 中检查,在 Network>>Headers 中有一个 post 请求,它event_id
在user_id
Query String Parametersevent_comment
下列出,在 Form Data 下列出event_items[homeprediction]
有谁知道我如何访问表单数据?使用 params[:homepredictions] 在我的 event_items 控制器中不起作用。