Ruby on rails RubyonRails:在编辑页面上不保存数据的字段
我有一个应用程序,用户可以提交一个新的项目。提交一个项目后,他们可以选择编辑刚刚提交的项目。单击edit(编辑)时,它会再次显示表单,并显示以前输入的所有数据 我的问题在于其中一个字段,它允许用户选择许多技术。它链接到另一个名为Projecttechnol的表,该表保存Technol表和Project表之间的链接。当用户单击编辑按钮时,该项目中包含的所有技术都不会显示。如果用户单击一项新技术并保存,则新技术将被保存,而旧技术仍然存在 我的技术编辑视图: 我是rails新手,因此任何帮助都将不胜感激,提前感谢 更新:这是我的项目模型Ruby on rails RubyonRails:在编辑页面上不保存数据的字段,ruby-on-rails,ruby,controller,action,edit,Ruby On Rails,Ruby,Controller,Action,Edit,我有一个应用程序,用户可以提交一个新的项目。提交一个项目后,他们可以选择编辑刚刚提交的项目。单击edit(编辑)时,它会再次显示表单,并显示以前输入的所有数据 我的问题在于其中一个字段,它允许用户选择许多技术。它链接到另一个名为Projecttechnol的表,该表保存Technol表和Project表之间的链接。当用户单击编辑按钮时,该项目中包含的所有技术都不会显示。如果用户单击一项新技术并保存,则新技术将被保存,而旧技术仍然存在 我的技术编辑视图: 我是rails新手,因此任何帮助都将不胜感
class Project < ActiveRecord::Base
attr_accessible :fullname, :edited_first_name, :edited_last_name, :first_name, :last_name, :business_div, :client, :customer_benefits, :edited_date, :end_date, :entry_date, :financials, :industry, :keywords, :lessons_learned, :project_name, :project_owner, :role, :start_date, :status, :summary, :tech , :technols, :technol_tokens
has_many :projecttechnols
has_many :technols, :through => :projecttechnols
accepts_nested_attributes_for(:technols)
另外,请确保您的项目包含与嵌套模型的正确关系,并且它已接受您在集合中设置的的属性:multiple=>true。我需要允许他们选择多个技术感谢帮助。我把我的代码改成了你的,结果我出错了。这些技术仍然没有出现,当我尝试添加更多时,会出现以下错误:nil:NilClass的未定义方法[]。我已经更新了我的问题,所以你可以看到我的模型。你好,我仍然得到相同的错误。ProjectsControllerupdate中的NoMethodError,未定义nil:NilClass的方法[]。我已将我的参数添加到我的问题中。请将代码放入更新方法中,并告诉我们哪一行出现上述错误!
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 edit
@project = Project.find(params[:id])
@project_technol = @project.projecttechnols.build
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?
@project.role = params[:new_role] unless params[:new_role].blank?
params[:technols][:id].each do |tech|
if !tech.empty?
@project_technol = @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
def update
@project = Project.find(params[:id])
@project.client = params[:new_client] unless params[:new_client].blank?
@technol.tech = params[:new_tech] unless params[:new_tech].blank?
@project.role = params[:new_role] unless params[:new_role].blank?
params[:technols][:id].each do |tech|
if !tech.empty?
@project_technol = @project.projecttechnols.build(:technol_id => tech)
end
end
respond_to do |format|
if @project.update_attributes(params[:project])
format.html { redirect_to @project, notice: 'Project was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
class Project < ActiveRecord::Base
attr_accessible :fullname, :edited_first_name, :edited_last_name, :first_name, :last_name, :business_div, :client, :customer_benefits, :edited_date, :end_date, :entry_date, :financials, :industry, :keywords, :lessons_learned, :project_name, :project_owner, :role, :start_date, :status, :summary, :tech , :technols, :technol_tokens
has_many :projecttechnols
has_many :technols, :through => :projecttechnols
accepts_nested_attributes_for(:technols)
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"+Fdh61iVz2IqZ+bNQz9SIa5ly7nNXaiCEr28hVWUxpM=",
"project"=>{"project_name"=>"Beverly",
"status"=>"Completed",
"client"=>"Qtjpa",
"business_div"=>"Ecbly",
"project_owner"=>"Qpzrv",
"start_date"=>"2012-10-15",
"edited_date"=>"2012-10-08",
"projecttechnols"=>{"id"=>["",
"41"]},
"role"=>"Ozeoe",
"industry"=>"Wjfiq",
"summary"=>"Eypriw lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"lessons_learned"=>"Kbjuhy lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"customer_benefits"=>"Fsonlw lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",,
"keywords"=>"Bwdtm"},
"new_client"=>"",
"new_business_div"=>"",
"new_project_owner"=>"",
"new_role"=>"",
"new_industry"=>"",
"commit"=>"Save Edit",
"id"=>"103"}
<%= fields_for(@project_technol) do |ab| %>
<%= ab.label "Choose Technologies"%> </br>
<%= collection_select( :technols, :id, Technol.all, :id, :tech, {}, {:multiple => true } ) %>
<% end %>
<%= f.fields_for(:projecttechnols) do |ab| %>
<%= ab.label "Choose Technologies"%> </br>
<%= ab.collection_select(:id, Technol.all, :id, :tech, {}, {:multiple => true } ) %>
<% end %>
form_for(@project) do |f|