在Rails中将ID传递给控制器​​show方法

时间:2014-08-07 15:10:18

标签: ruby-on-rails view controller

我的test_app中有以下视图页面:

<p id="notice"><%= notice %></p>

<p>
  <strong>Box count:</strong>
  <%= @job.box_count %>
</p>

<p>
  <strong>Install date:</strong>
  <%= @job.install_date %> 
</p>

<%= link_to "Back", :back %>

我的jobs_controller show方法中有以下ruby代码:

def show
  @job = Job.find(params[:job_id])
end

传递给视图的参数是(&#34; customer_id&#34;&#34; id&#34;作业),如下所示:

{"customer_id"=>"1", "id"=>"23"}

当我为任何作业加载视图时,出现以下错误:

Couldn't find Job without an ID

我的show方法一定有错误,但我不确定我做错了什么。

有什么想法吗?


看起来问题是我的表单没有将数据保存到表中,这是我的表单:

<%= form_for([@customer, @job]) do |f| %>
  <% if @job.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@job.errors.count, "error") %> prohibited this job from being saved:</h2>

      <ul>
      <% @job.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :box_count %><br>
    <%= f.number_field :box_count %>
  </div>
  <div class="field">
    <%= f.label :install_date %><br>
    <%= f.text_field :install_date %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

知道为什么没有保存数据吗?

1 个答案:

答案 0 :(得分:1)

您应该使用:id,而不是:job_id

def show
  @job = Job.find(params[:id])
end