相当简单的问题,我在搜索中看到了很多类似的问题,但到目前为止我读过的解决方案都没有奏效。不知道我哪里错了。
在我的应用程序中,我有项目和验证。查看特定项目时,我需要能够有一个指向“验证项目”的链接,这会将用户发送到一个新的验证表单。他们将输入各种值,但我不希望他们必须手动选择此验证所属的项目——我希望能够将 project_id 与用户在验证表单中输入的值一起直接传递。
在我的项目视图中,我有:
<%= link_to "Verify Project", new_verification_path(:project_id => @project.id ) %>
然后在验证控制器中:
def new
@verification = Verification.new(params[:verification])
@project = params[:project_id]
end
def create
@verification = Verification.new(params[:verification])
@verification.project = @project
end
但这会产生此错误:
Validation failed: Project does not exist, Project does not exist
如何使用从上一页获取的 :project_id 创建我的验证?
编辑
从 Rails 日志中:(单击验证项目)
在 2013 年 9 月 10 日 04:02:56 +0200 由 VerificationsController#new 作为 HTML 参数处理 127.0.0.1 开始 GET "/verifications/new?project_id=4":{"project_id"=>"4"} 渲染验证/_form.html.erb (91.3ms) 在布局/应用程序中渲染验证/new.html.erb (97.5ms)
渲染布局/_shim.html.erb (0.3ms) 帐户加载 (0.2ms) 选择“帐户”。* FROM "accounts" WHERE "accounts"."remember_token" = 'NuxEYIjeCYyFklN7EyHTDQ' LIMIT 1 Rendered layouts/_header.html.erb (38.6ms) Rendered layouts/_footer.html.erb (0.3ms) 在 381ms 内完成 200 OK(查看次数: 368.4 毫秒 | 活动记录:2.7 毫秒)
然后创建
在 2013-09-10 04:03:04 +0200 由 VerificationsController#create 作为 HTML 参数处理 127.0.0.1 开始 POST "/verifications":{"utf8"=>"✓", "authenticity_token"=>"sqUBXqA6y5oKCW1DFAi3sv8rQzm+ tKjOYDdc/lvUS+c=", "verification"=>{"verifier_name"=>"test", "checked_on(1i)"=>"2013", "checked_on(2i)"=>"9", "checked_on( 3i)"=>"10", "notes"=>"test"}, "commit"=>"Create Verification"} 账户负载 (0.2ms) 选择 "accounts".* 从 "accounts" WHERE "accounts"。 "remember_token" = 'NuxEYIjeCYyFklN7EyHTDQ' LIMIT 1 (0.0ms) 开始交易
(0.1ms) 回滚事务在 18ms 内完成 422 Unprocessable EntityActiveRecord::RecordInvalid(验证失败:项目不存在,项目不存在):
app/controllers/verifications_controller.rb:55:in `create'
编辑 2
这是创建操作的表单:
<%= form_for(@verification) do |f| %>
<% if @verification.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@verification.errors.count, "error") %> prohibited this verification from being saved:</h2>
<ul>
<% @verification.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="row">
<div class="span6 offset3">
<div class="field">
<%= f.label :verifier_name %><br />
<%= f.text_field :verifier_name %>
</div>
<div class="field">
<%= f.label :checked_on %><br />
<%= f.date_select :checked_on %>
</div>
<div class="field">
<%= f.label :notes %><br />
<%= f.text_area :notes %>
</div>
<div class="actions">
<%= f.submit %>
</div></div></div>
<% end %>