2015-11-16 40 views
-1

我的問題是,我有喜歡的一種形式:獲得通過紅寶石從下拉菜單中選擇項目

<select name="Users"> 
    <option value=""selected>Select user to add</option> 
    <% notShareWith.each do |user| %> 
    <option value=<%user.id%>><%=user.name+" "+user.email%></option> 
    <% end %> 
</select> 
<% form_for @imageuser do |f| %> 
    <%= f.hidden_field :user_id ,:value => 5 %> 
    <%= f.hidden_field :image_id ,:value => @image.id %> 
<% end %> 

我的下拉菜單中正常工作,並列出有訪問權的用戶。我可以撤銷訪問權限和一切。我不知道如何知道從下拉菜單中選擇了什麼選項或如何將其提交給圖像用戶表單。我使用:

<% form_for @imageuser do |f| %> 
    <%= f.hidden_field :user_id ,:value => 5 %> 
    <%= f.hidden_field :image_id ,:value => @image.id %> 
<% end %> 

提交所選的用戶,但我需要知道所選項目的價值,所以我可以通過說價值爲:對於再次

<%= f.hidden_field :user_id ,:value => 5 %> 

謝謝幫幫我。

回答

1

您還可以使用options_from_collection_for_select

像這樣的東西應該工作

<% form_for @imageuser do |f| %> 
    <%= f.select :user_id, options_from_collection_for_select(notShareWith, 'id', 'name'), prompt: 'Select user to add' %> 
    <%= f.hidden_field :image_id ,:value => @image.id %> 
<% end %> 
0

使用collection_select助手代替,像這樣:

<%= f.collection_select(:user_id, notShareWith.map { |user| user.id }, :id, :id, :prompt => 'Select') %> 

然後,抓住選定的值,如:params[:user_id]

0

要補選定用戶ID在你的表格,你必須完成幾個步驟

首先,添加id屬性,在選項

<select id="user_id" name="Users"> 
    <option value=""selected>Select user to add</option> 
    <% notShareWith.each do |user| %> 
    <option value=<%user.id%>><%=user.name+" "+user.email%></option> 
    <% end %> 
</select> 

然後,您可以使用JavaScript來進入imageuser形式:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#user_id").change(function(){ 
     selected = $(this).val(); 
     $("#imageuser_user_id").val(selected); 
    }); 
    }); 
</script 

注:

你最好使用select_tag助手創建選擇選項

<%= select_tag 'user_id', options_for_select(notShareWith.collect{ |u| ["#{u.name} #{user.email}", u.id]}, prompt: "Select user to add") %> 
+0

如果我使用'select_tag'創建選擇選項,如何讓選定的選項回傳給'form_for'中的'user_id' –