我有一个应用程序,用户可以在其中提交项目。对于每个字段,他们可以选择将新数据放入数据库,或者从过去的项目中选择旧数据来填充该字段。
在我的新视图中,我无法让它适用于这段代码:
<%= form_for(@technol) do |tech| %>
<%= fields_for(@project_technol) do |ab| %>
<%= text_field_tag :tech, nil, :maxlength => 30 %>
OR<br />
<%= ab.label "All Tech"%> </br>
<%= collection_select( :technols, :id, Technol.all, :id, :tech, {}, {:multiple => true } ) %>
</div>
<% end %>
<% end %>
目前,用户可以从 collection_select 中选择许多技术,并将它们与项目一起保存,但我试图让他们选择通过文本框将自己的技术放入其中。
我的控制器动作:
新的
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])
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
总而言之,我希望用户可以选择将新技术输入数据库,并从下拉列表中选择现有技术,然后将所有技术保存在项目中,并将输入的新技术保存在技术表中。
有任何想法吗?我是一个 Rails 菜鸟,所以在尝试回答时请记住这一点。任何帮助都感激不尽。提前致谢