嵌套路由路径中的URL路径和参数问题

时间:2016-01-12 00:47:13

标签: ruby-on-rails ruby-on-rails-4 routes

我只是想链接到嵌套在指南中的类别#new。我从指南显示页面链接到它

 <%= link_to "Add new category", new_guide_category_path %>

问题是我收到错误:

没有路由匹配{:action =&gt;“new”,:controller =&gt;“categories”,:id =&gt;“blah”}缺少必需的键:[:guide_id]

它使用:id而不是:guide_id。我如何解决这个问题,以便存储它使用的参数:guide_id。

或者是否有不同的方式链接到指南/:guide_id / categories / new页面和其他嵌套资源页面

路线:

resources :guides do
   resources :categories,     only: [:new, :create, :edit, :update]
end

仍在学习rails,所以这可能是一个noob问题,你甚至没有使用路径链接到它。

2 个答案:

答案 0 :(得分:1)

例如,你有模型指南,在控制器中你有变量,如

@guide = Guide.where(...)

在视图中你需要指定这个模型的id和简单的方法,只是为了将这个变量传递给url helper:

<%= link_to "Add new category", new_guide_category_path(@guide) %>

这也适用于多个嵌套资源。例如:

路线:/foo/:foo_id/bar/:bar_id/buz/:id

只需将所有这些模型实例传递给helper,如

show_buz_bar_foo_path(@foo, @bar, @buz)

rails会自行获取这些项目的ID。

答案 1 :(得分:0)

尝试这样做

var sourceMap = require('source-map');
var fs = require('fs');

fs.readFile('./sourcemap.js', 'utf8', function (err, data) {
    var smc = new sourceMap.SourceMapConsumer(data);

    console.log(smc.originalPositionFor({
        line: 16,
        column: 29356
    }));
});

new_guide_category_path( @guide.id ) 帮助器可以根据提交数据对您的嵌套进行排序,但链接到其他路径则是另一回事。