簡體   English   中英

將text_field輸入值傳遞給某個控制器

[英]Passing text_field input value to a certain controller

我是Ruby和Rails的新手,遇到了一個我似乎無法解決的問題:

在我的rails應用程序中,我有一些用戶在索引站點(稱為home)上顯示了幾個事件。

如果用戶想“標記”這些事件,則可以單擊事件旁邊的按鈕,將其添加到他的event_items列表中,這只是我為用戶和事件之間的關聯而設置的“關聯”控制器(例如,用戶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列表,該列表僅將even_items db表中的關聯記錄為user_id和event_id。

現在,我想允許用戶向事件添加一個注釋到event_items db-table。

我似乎找不到一種將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中檢查一個發布請求,該請求的event_iduser_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM