link_to助手:嵌套路线



这让我发疯...

我已经构建了一些具有标准路由的测试应用程序,但是这次想在a内嵌套B。这样(A和B是轻松的例子)

resources :a do
 resources :b
end

在" B控制器"中,我的索引定义为

def index
 @b = B.all
end

在索引页上我有

<p>B index</p>
 <ul class="b">
  <% @b.each do |b| %>
  <li>
   <%= link_to b.name, b %>
  </li>
<% end %>

控制器参数设置

  def B_params
    params.require(:b).permit(:name, :description, :this, :that, :a_id)
  end    

因此,错误消息是在查看index.html'未定义的b_path方法'

我很确定这是一个路由问题,因为我所有其他索引页面都可以正常工作。那么路由嵌套B_Path的正确方法是什么。

我尝试了

get '/a/:id/b', to: 'b#index' -----fails
get '/a/:a_id/b', to: 'b#index' ----fails
get '/b', to: 'b#index' ----- not surprising fails

所以我想念什么。一旦您嵌套资源

,还有其他事情要做还是其他方式来链接

谢谢

好的,所以我设法在感觉像永恒之后弄清楚了。以防万一任何人有兴趣

link_to b.name语句后立即引用" b"的故障。应该是...

<p>B index</p>
 <ul class="b">
 <% @b.each do |b| %>
 <li>
 <%= link_to b.name, a_b %>
 </li>

,请众所周知,请解释一下。一旦嵌套的三个重要文件是路由。RB您需要在其中设置索引的正确路由...对于此示例,它将为

get '/a/:a_id/b', to: 'b#index'

这来自运行导轨路线,看到正确的路径返回那里。

然后在" B控制器"中,您将变量声明为正常

def index
    @b = B.all
end

然后在视图/b/index.html.erb中您调用该变量,但至关重要的是参考新的B#索引路径

<% @b.each do |b| %>
  <li>
  <%= link_to @b.name, a_b_url %>
  </li>
<% end %>

我敢肯定,我的理解还没有完整,但是我已经开始工作了。快乐的日子

相关内容

  • 没有找到相关文章

最新更新