ruby-on-rails - rails : Why does my route enforce an ending with a dot id?

标签 ruby-on-rails ruby ruby-on-rails-4

这是我的佣金路线的一小部分:

   new_word GET    /words/add(.:format)                        words#new
create_word POST   /words(.:format)                            words#create
      words GET    /words/:category(.:format)                  words#index
  edit_word GET    /words/:category/:word_param/edit(.:format) words#edit {:word_param=>/[a-zA-Z]+/}
       word GET    /words/:category/:word_param(.:format)      words#show {:word_param=>/[a-zA-Z]+/}
            PATCH  /words/:category/:word_param(.:format)      words#update {:word_param=>/[a-zA-Z]+/}
            PUT    /words/:category/:word_param(.:format)      words#update {:word_param=>/[a-zA-Z]+/}
            DELETE /words/:category/:word_param(.:format)      words#destroy {:word_param=>/[a-zA-Z]+/}

所以基本上,我的预期路线是这样的

localhost:3000/words/all/word

但是我得到了类似的东西

localhost:3000/words/all/word.8 # obviously the dot id syndrome

这是我在路径/url(在我的index.html.erb中)中传递的一些额外参数的示例:

    <td><%= link_to 'Show', word_path(word, category: word.category,word_param:word.name)  %></td>
    <td><%= link_to 'Edit', edit_word_path(word, category: word.category, word_param:word.name) %></td>
    <td><%= link_to 'Destroy', word_path(word, category: word.category, word_param:word.name), method: :delete, data: { confirm: 'Are you sure?' } %></td>

编辑:TLDR;与其他几篇文章一样,这是路径辅助函数,我在使用文档来找到答案时遇到了困难。 (我什至找不到它)

最佳答案

看起来您不小心将一个对象传递给了路由的可选 (.:format) 部分。这就是为什么对象的 ID 会在一段时间后显示 - 这正是格式(.html.css 等)在 URL 中的显示方式.

看看你是如何调用你的路线的,并确保你没有无意中传递了太多的东西。

编辑:是的,现在您已经添加了链接,这就是您正在做的事情。查看 word_path 调用 - 您将向其中传递三个变量 - wordword.categoryword.name.您已将其中两个明确分配给 route 的 :category:word_param 点。第三个额外变量会自动分配给 :format,因为这是路由中剩下的唯一变量。

尝试这些:

word_path(category: word.category, word_param: word.name)
edit_word_path(category: word.category, word_param: word.name)

关于ruby-on-rails - rails : Why does my route enforce an ending with a dot id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20536068/

相关文章:

ruby - "return object if found"的一行

mysql - 无法在 fedora 21 机器上安装 scrypt gem

sql - Kaminari 在 Postgres 的大表上使用 COUNT(*) 很慢

ruby-on-rails - 使用cucumber时,如何选择 'test'数据库?

ruby-on-rails - 如何访问远程 VM 中的 Rails 服务器

css - 带工具提示的简单表单标签

ruby - 在公共(public)基本路线之上构建路线?

ruby-on-rails - Rails 3. 获取相关模型的属性

Ruby/Rails sort_by 日期 desc,名称 asc

ruby-on-rails - 在Rails中,我可以抛出异常但继续吗?