我是Ruby和Rails的新手,我遇到了一个似乎无法解决的问题:
在我的rails应用程序中,我的用户在索引站点上称为home,显示了几个事件。
如果用户想要“标记”这些事件,他可以点击事件旁边的按钮并将其添加到他的event_items列表中,这只是我为用户和事件之间的关联实现的“关联”控制器(例如,用户has_many事件,反之亦然)
这一切都很好,这就是我实现添加功能的方式:
回家的<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列表中添加一个事件,该列表只记录even_items db-table中关联的user_id和event_id。
现在我想允许用户在event_items db-table中添加对事件的注释。
我似乎无法找到将text_field值传递给event_items_path以将注释添加到db中的event_items表的方法。
我想我不能再使用“button_to”方法,因为它以自己的形式解析,因此我无法传输任何text_field信息。所以我创建了一个新表单...我无法通过这个表单将text_field信息作为参数传递:
<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 %>
当我按下提交按钮时,它仍会在我的db-table中创建event_item,但没有event_comment。在我的浏览器中检查后传输它似乎不传输:event_comment。
它只能访问参数中的:event_id和:user_id。
我将不胜感激任何帮助!
我刚刚意识到,当我从上面的新表单中按下提交按钮时,:event_comment确实会与表单一起传输。
签入Chromes DevTools,在网络&gt;&gt;标题中有一个帖子请求,其中event_id
和user_id
列在查询字符串参数下,event_comment
列在表单数据下{ {1}}
有谁知道我如何访问表单数据?使用params [:homepredictions]在我的event_items控制器中不起作用。
答案 0 :(得分:0)
现在找到解决方案:
:event_comment正在提交时传输。它作为event_items[homeprediction]
存储在表单数据中。
这是我在event_items控制器中访问数据所做的:
def create
@user = User.find(params[:user_id])
event = Event.find(params[:match_id])
comment = params[:event_items]
@event_item = @user.event_items.build(event: event, event_comment: comment[:event_comment])
...
end
我将params[:event_items]
哈希保存到新的comment[]
哈希。在新的comment[]
哈希中,我能够访问从表单field_tag传递的:event_comment
。
不知道这是否是最优雅/正确的做法。但它现在有效: - )