[英]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.