2012-09-21 45 views
0

我無法找到一個解決方案,我變得有點絕望......Rails的創建多個條目複選框

形式:

<%= simple_form_for @skill_user, :url => create_new_skill_users_path do |f| %> 

<% @skills.each do |skill| %> 
<%= skill.name %> 

現在......其他領域......在新

<%= f.input :prio, collection: 1..5, :as => :radio_buttons %> 
<%= f.text_field :remark%> 



<%= check_box_tag "skill_ids[]", "#{skill.id}" %> 
<%= hidden_field_tag("skill_id", "#{skill.id}") %> 
<%= hidden_field_tag(:user_id, "#{@user.id}") %> 
<% end %> 

控制器:

def create_new_skill 
params[:skill_ids].each do|skill_id| 
    SkillUser.create(
     :user_id => user_id, :instruction_id => params[:instruction_id], :remark => ??, :prio => ?? 
    ) 
    end 

感謝您的支持。 現在我有一個不同的問題/兩個問題。如果......你可以再次幫助我,那會很好。

每行中的表單中的單選按鈕集合。但不可用,因爲它們是一個行爲而不是每行。我需要一些額外的參數來將它們指向每行的skill.id。

還有如何獲取控制器中的值。

備註文本字段。我在日誌中獲得「skill_user」=> {「remark」=>「」}。獲取覆蓋..需要某處[]。什麼是最好的方法?

我曾嘗試:

<%= simple_fields_for 「技能[]」,@skill_user做| F | %> 給我日誌: 「技能」=> [{ 「備註」=> 「測試」}

控制器 :備註=> PARAMS [:技能] [:備註] =>不能轉換符號到整數 PHH ...

「text_field_tag []」 還給哈希..

回答

0

你應該在你的控制器的動作寫

params[:skill_ids].each do|skill_id| 
    SkillUser.create(:user_id => params[:user_id], :skill_id => skill_id) 
end 

除了你的動作後,應在不建立新的,按照約定REST

+0

謝謝這是非常有用的... – Werner

+0

高興,它幫助:) –

+0

可能你再看看..我現在有兩個字段... – Werner

0

正如你可能是在學習階段,我會建議你一些提示,並給你答案。

用一個好名字命名你的動作和控制器。在這種情況下,我猜想一個帶有新動作的SkillController是個不錯的選擇。在路線中,大部分時間使用資源而不是匹配或獲取/發佈/放置/刪除。

def new_sk 
    params[:skill_ids].each do|skill_id| 
    SkillUser.create(
     :user_id => params[:user_id], 
     :skill_id => skill_id, 
     :name => params[:name] 
    ) 
    end 
end 

就是答案。這段代碼非常簡單,你傳遞給SkillUser.create的是一個HASH,它的哈希鍵是user_id,skill_id和name,它們各自的值是params [:user_id],params [:skill_id]和params [:name ]。

當你不知道如何「PARAMS」當前狀態變量(它是如何Hash值進行嵌套等),我勸你還是打印出來,像這樣:

p params.inspect 

在您的行動開始時,閱讀您正在運行服務器的終端上打印的內容。有一種稱爲awesome_print的寶石,它用顏色打印它,當你試圖查看服務器端真正發生的事情時,它很棒(顧名思義)。

我還建議你創建一個好名字的模型。 「SkillUser」是錯的,如果你寫了UserSkill會更好。您可能很快就會與關係合作,並且我進一步建議您閱讀Rails指南。

Rails guides是黃金。你可以在那裏找到90%的問題,並有很好的解釋。

祝您有美好的一天。

+0

感謝您的支持..這現在工作正常,但我有問題與添加字段..文本和電臺..見上面 – Werner