2014-07-03 19 views
0

我希望將選項值從用戶名更改爲html中選項值的用戶標識。rails選項值爲id

例如:

<option value="John">John</option> 
<option value="Jim">Jim</option> 
<option value="Kelly">Kelly</option> 
<option value="Monica">Monica</option> 
<option value="Ralp">Ralp</option> 

這是我的HTML的輸出,我想是用戶ID值,如:

<option value="1">John</option> 
<option value="2">Jim</option> 
<option value="3">Kelly</option> 
<option value="4">Monica</option> 
<option value="5">Ralp</option> 

我也想它是動態的,所以當越來越多的用戶來我不必手動輸入他們的名字。

我對目前的軌道是這樣的:

<%= form_tag '/login', method: 'post' do %> 
    Name: 
    <br/> 
     <%= select_tag :user_id, options_for_select(@users) %> 
    <br/> 
    <br/> 
    <%= submit_tag 'Login' %> 
    <% end %> 

我的控制器,例如:

def login_user 
    user = User.find_by_name(params[:user_id]) 
    if user 
     session[:user_id] = user.id 
     redirect_to user_path(user) 
     return 
    end 

    flash[:error] = 'Sorry that user not in the system.' 
    redirect_to root_path 
    end 

可能有人請幫我指出了正確的方向。先謝謝你。

回答

1

我不明白你的意思是「動態」。但以下應該解決您的選擇問題

<%= form_tag '/login', method: 'post' do %> 
    Name: 
    <br/> 
     <%= select_tag :user_id, options_for_select(User.all.collect{|u| [u.name, u.id]}) %> 
    <br/> 
    <br/> 
    <%= submit_tag 'Login' %> 
    <% end %> 
+0

這就是我要找的!謝謝!然而,它給了我以下錯誤:「約翰」的未定義方法'名稱':字符串。你碰巧知道如何解決這個問題? – Mukul215

+0

修改我的答案。我假設@users是用戶對象列表 – usha

+0

謝謝您的回答。非常感謝。 – Mukul215

0

明白了,我用這個來代替:

<%= collection_select(:user, :id, User.all, :id, :name) %> 

這給了我一個下拉與用戶價值和用戶名選項卡。謝謝你們!