ユーザーが新しいプロジェクトを作成できるアプリがあります。新しいプロジェクトの作成フォームでは、フィールドごとに、そのフィールドに入力する新しいデータを作成するオプション、または以前のプロジェクトからデータを選択するオプションがあります。たとえば、新しいクライアント名を入力するか、プロジェクトから既存のクライアントを選択します。以前に入力されたデータベース。
これで、テクノロジーとプロジェクトの間の関係テーブルをセットアップして、ユーザーが複数のテクノロジーを選択して 1 つのプロジェクトに対応できるようにしました。
私の問題は、collection_select に存在しない場合に、より多くのテクノロジを送信できるようにすることです。
これが私の新しい見解です:
<%= stylesheet_link_tag "form" %>
<%= form_for(@project) do |f| %>
<div class="client">
<%= label_tag :new_client, "Client" %><br/>
<%= text_field_tag :new_client, nil, :maxlength => 30 %>
Or
<%= f.select( :client, Project.all.map {|p| [p.client]}.uniq, :prompt => "Select a previous Client") %>
</div>
<%= fields_for(@project_technol) do |ab| %>
<%= text_field_tag :tech, nil, :maxlength => %>
<%= ab.label "All Tech"%> </br>
<%= collection_select( :technols, :id, Technol.all, :id, :tech, {}, {:multiple => true } ) %>
</div>
<% end %>
<div class="create_button">
<div class="actions">
<%= f.submit "Save New Project", :class => "button", :confirm => "Are you sure you want to save the new project?" %>
</div>
</div>
</div>
<% end %>
<div class="back_button2">
<%= button_to "Back", projects_path , :class => "button", :method => "get" %>
</div>
そして、ここに私の作成と新しいアクションがあります:
def new
@project = Project.new
@technol = Technol.new(params[:tech])
@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?
@technol.tech = params[:new_tech] unless params[:new_tech].blank?
params[:technols][:id].each do |tech|
if !tech.empty?
@project.projecttechnols.build(:technol_id => tech)
end
end
respond_to do |format|
if @project.save
format.html { redirect_to @project, notice: 'Project was successfully created.' }
format.json { render json: @project, status: :created, location: @project }
else
format.html { render action: "new" }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
助けていただければ幸いです。私はこの問題に本当に悩まされています。私はレールに慣れていないので、助けようとするときはこれを覚えておいてください。