0

ユーザーがプロジェクトをデータベースに入力できるアプリがあります。

プロジェクトにさまざまなテクノロジーを選択できるオプションがあります。現時点では、ユーザーが少なくとも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"]ます。

私はまだレールに慣れていないので、助けようとするときはこれを覚えておいてください。どうもありがとう

4

2 に答える 2

1

選択肢は 2 つあります。

まず、非表示の入力をフォームに追加します。

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

次に、controller#action のパラメーターを更新します。

def create
  ...
  technol_ids = params[:technol_ids].blank? ? [18] : params[:technol_ids]
  technol_ids.each do |id|
  ...
  end
  ...
end
于 2012-11-26T12:42:37.903 に答える
0

できることは、移行を記述し、次のように列のデフォルト値を設定することです。

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

したがって、ユーザーが値を選択しなくても、デフォルトはnilではなくtrueになります。

于 2012-11-26T11:53:04.783 に答える