2012-11-26 39 views
0

我有一個應用程序,用戶可以在其中輸入項目到數據庫。Ruby on Rails:check_box_tag - 默認如果沒有選擇

有一個選項,他們可以爲他們的項目選擇許多不同的技術。目前,如果用戶沒有選擇至少1種技術,應用程序會標記錯誤。

我想改變這個,所以如果他們不選擇一項技術,它會自動下降爲「其他」。

這裏是我的項目負責人的行動,新的創造:

def new 
    @project = Project.new 
     @technol = Technol.new(params[:tech]) 

     @all_technols = Technol.order('tech ASC') 
     @all_technols = Technol.all 
     tech_ids = params[:technols][:id].reject(&:blank?) unless params[:technols].nil? 


     @project_technol = @project.projecttechnols.build 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @project } 
    end 
    end 



def create 
    @project = Project.new(params[:project]) 
     @project.client = params[:new_client] unless params[:new_client].blank? 
     @project.industry = params[:new_industry] unless params[:new_industry].blank? 
     @project.business_div = params[:new_business_div] unless params[:new_business_div].blank? 


if !params[:technols].nil? 

      params[:technols][:id].each do |tech| 


       if !tech.empty? 

        @project_technol = @project.projecttechnols.build(:technol_id => tech) 
        end 
      end 

end 

這裏是該技術領域

<ul> 


<% @all_technols.each do |technol| %> 



<li class="split"> 
<%= check_box_tag "project[technol_ids][]", technol.id, @project.technols.include?(technol) %> 
<%= technol.tech %> 
</li> 

<% end %> 
</ul> 

技術ID,在 「其它」 的新觀點技術表格是「18」。那麼有沒有辦法說,如果沒有選擇技術,那麼:technol_id => ["18"]

我還是個新手,所以請在試圖幫助時記住這一點。非常感謝

回答

1

你有兩種選擇。

首先,將隱藏的輸入添加到形式:

<input type="hidden" name="project[technol_ids][]" value="18" /> 

其次,控制器#動作更新PARAMS:

def create 
    ... 
    technol_ids = params[:technol_ids].blank? ? [18] : params[:technol_ids] 
    technol_ids.each do |id| 
    ... 
    end 
    ... 
end 
+0

''完美地工作。謝謝 – Jazz

+0

我只想到一件事:在隱藏輸入的情況下,18個將被添加到所有項目中。也許這不是你想要的。你最好試試第二種解決方案。 – Yanhao

+0

我注意到發佈後。找到了另一個解謝謝你的幫助 – Jazz

0

你可以做的是寫一個遷移,並設置列的默認值如下

add_column :users, :technology, :string, :default => "other" 

因此,即使用戶不選擇任何值默認爲真不爲零

+0

我添加遷移'change_column:projecttechnols,:technol_id,:整數,:默認=> 18'。當我輸入一個新項目時,這似乎並不能節省技術 – Jazz

相關問題