[英]Passing text_field input value to a certain controller
我是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表中的关联记录为user_id和event_id。
现在,我想允许用户向事件添加一个注释到event_items db-table。
我似乎找不到一种将text_field值传递到event_items_path,以将注释添加到数据库中的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 %>
当我按下提交按钮时,它仍然在我的数据库表中创建event_item,但是没有event_comment。 在我的浏览器中检查帖子的发送似乎没有发送:event_comment。
它只能访问参数中的:event_id和:user_id。
我将不胜感激任何帮助!
我刚刚意识到,当从我的新表单上方按提交按钮时,:event_comment确实与表单一起发送。
在Chromes DevTools中,在Network >> Headers中检查一个发布请求,该请求的event_id
和user_id
在“查询字符串参数”下列出,而event_comment
在“表单数据”下作为event_items[homeprediction]
有谁知道我如何访问表单数据? 在我的event_items控制器中,无法使用params [:homepredictions]。
现在找到一个解决方案:
: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
。
不知道这是否是最优雅/最正确的方法。 但这暂时有效:-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.