Rails - Slug导致错误的id与编辑控制器一起传递

时间:2015-10-20 20:39:03

标签: ruby-on-rails

我有一个slug定义如下:

def slug
  name.downcase.gsub(" ", "-")
end
def to_param
    "#{id}-#{slug}"
end

我的编辑控制器具有以下内容:

@lightnovel = Lightnovel.find(params[:id])

在我的编辑视图表单中:

<%= form_for(@lightnovel) do |f| %>
<div class = "field">
    <%= f.label :name  %>
    <%= f.text_area :name %><br>
</div>
<div class = "field">
    <%= f.label :series  %>
    <%= f.text_area :series %><br>
</div>
<div class="actions"> 
  <%= f.submit %> 
</div> 
<% end %>

当我编辑记录并提交时,我收到错误。问题是它使用的ID来自slug的修改,而不仅仅是ID。(附后)

{"utf8"=>"✓",
"_method"=>"patch",
"authenticity_token"=>"8TGBnfKuhOBhd4YISAwtWMc0Lc4ZIkxOM3oeakgKkPvJKqyRo2jPWPHMwwXtVS5LfGCXviqVI4XhVPngfNWNHw==",
 "lightnovel"=>{"name"=>"CD",
 "series"=>"CD"},
 "commit"=>"Update Lightnovel",
 "id"=>"5-cd"}

使用的ID必须是5而不是&#34; 5-cd&#34;。我该怎么做才能改变这个?

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案:

似乎问题不是由id引起的,而是由于我的控制器中的更新操作未被定义。

一旦我定义了它并添加了@lightnovel var就可以了。