【发布时间】:2015-06-18 20:00:27
【问题描述】:
我正在尝试通过隐藏的表单字段更新Idea 属性challenge_id。这是字段:
<%= f.hidden_field :challenge_id, :value => @challenge.id %>
当创意被创建到创意控制器#create 方法时,它成功地将挑战 ID 作为参数传递:
Started POST "/ideas.js" for ::1 at 2015-06-18 15:39:49 -0400
Processing by IdeasController#create as JS
Parameters: {"utf8"=>"✓", "idea"=>{"title"=>"adsf", "description"=>"asf", "domain_tokens"=>"20", "challenge_id"=>"5"}, "commit"=>"Create Idea"}
这个challenge_id => 5 应该保存到下面@idea = Idea.new(idea_params) 行中的想法:
ideas_controller.rb
def create
@idea = Idea.new(idea_params)
respond_to do |format|
if @idea.save
idea_count = @idea.user.ideas_created_count
@idea.user.update(:ideas_created_count => idea_count + 1)
@idea.domains.each do |domain|
current_user.add_points(1, category: domain.title)
end
@ideas = current_user.current_team.ideas.sort_by{|i| i.heat_index}.reverse
@ideas = @ideas.paginate(:page => params[:ideas_page], :per_page => 10)
format.html { redirect_to :back, notice: 'Idea was successfully created.' }
format.json { render :show, status: :created, location: @idea }
format.js
else
format.html { redirect_to :back, notice: "You must attach domains to your Idea." }
format.json { render json: @idea.errors, status: :unprocessable_entity }
format.js { render :create_failed }
end
end
end
.
.
def idea_params
params.require(:idea).permit(:title, :description, :challenge_id)
end
但是,此挑战 ID 不会与其他允许的 idea_params、:title 和 :description 一起保存到 idea。如何在创建时将 challenge_id 保存到 Idea?
【问题讨论】:
-
这个方法的第一行中的
puts params会打印什么? -
还有
idea_params返回的内容。
标签: ruby-on-rails ruby forms ruby-on-rails-4