我有一个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;。我该怎么做才能改变这个?
答案 0 :(得分:0)
我找到了问题的答案:
似乎问题不是由id引起的,而是由于我的控制器中的更新操作未被定义。
一旦我定义了它并添加了@lightnovel var就可以了。