【发布时间】:2011-08-31 18:28:16
【问题描述】:
Couldn't find Submission without an ID
最近几天这个问题一直困扰着我,我似乎无法解决它。 当我尝试在应用中创建 Emailinterest 对象时会出现此问题。
我有两个模型。
- 提交
- 电子邮件兴趣
每次提交可以有多个emailinterest,但emailinterest不能存在
C:\Rails\actuirl5\app\controllers\emailinterests_controller.rb
submission_id 实际上是 emailinterest 对象的成员。 submit_id 假设包含提交对象的 ID 值。
def create
@emailinterest = Emailinterest.new(params[:emailinterest])
@submission = Submission.find(params[:submission_id])
respond_to do |format|
if @emailinterest.save
Notifier.emailinterest_notification(@emailinterest, @submission).deliver
format.html { redirect_to(@emailinterest, :notice => 'Email was successfully sent!') }
format.xml { render :xml => @emailinterest, :status => :created, :location => @emailinterest }
else
format.html { render :action => "new" }
format.xml { render :xml => @emailinterest.errors, :status => :unprocessable_entity }
end
end
end
C:\Rails\actuirl5\app\views\submissions\show.html.erb
....
<%= render :partial=>"form_new_emailinterest", :locals=>{:emailinterest=>Emailinterest.new(:submission_id=>@submission.id)} %>
C:\Rails\actuirl5\app\views\submissions
<%= form_for(emailinterest) do |f| %>
<%= hidden_field :submission_id, :value => @submission.id %>
<div class="field">
<%= f.label :sender_email %><br />
<%= f.text_field :sender_email %>
</div>
<div class="field">
<%= f.label :sender_email_content %><br />
<%= f.text_area :sender_email_content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
修复
C:\Rails\actuirl5\app\controllers\emailinterests_controller.rb
def create
@emailinterest = Emailinterest.new(params[:emailinterest])
@submission = Submission.find(params[:submission_id])
respond_to do |format|
if @emailinterest.save
Notifier.emailinterest_notification(@emailinterest, @submission).deliver
format.html { redirect_to(@emailinterest, :notice => 'Email was successfully sent!') }
format.xml { render :xml => @emailinterest, :status => :created, :location => @emailinterest }
else
format.html { render :action => "new" }
format.xml { render :xml => @emailinterest.errors, :status => :unprocessable_entity }
end
end
end
C:\Rails\actuirl5\app\views\submissions_form_new_emailinterest.html.erb
<%= form_for(emailinterest) do |f| %>
<%= hidden_field_tag :submission_id, value = @submission.id %>
<div class="field">
<%= f.label :sender_email %><br />
<%= f.text_field :sender_email %>
</div>
<div class="field">
<%= f.label :sender_email_content %><br />
<%= f.text_area :sender_email_content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
C:\Rails\actuirl5\app\views\submissions\show.html.erb
<%= render :partial=>"form_new_emailinterest", :locals=>{:emailinterest=>Emailinterest.new} %>
【问题讨论】:
-
试试这个:
@submission = Submission.find(params[:emailinterest][:submission_id]) -
Couldn't find Submission without an ID仍然出现此错误。 -
显示服务器正在接收的
params。看起来submission_id被传递给Submission.find是nil。 -
"显示服务器正在接收的参数。"有什么快速的方法?
-
执行
tail log/development.log并查找请求——参数散列在每个操作之后写入。
标签: ruby-on-rails ruby ruby-on-rails-3