为什么会有。而不是我在ROR中的URL路径中的/

时间:2013-02-05 14:19:22

标签: ruby-on-rails ruby

我安装了Devise(称为成员)并设置了一些自定义路由,以便我可以吐出所有成员并允许他们拥有自己的页面(/ memebers /和/ members /:id /)

但是在我的视图文件中,成员索引在传递路径member_path(member_id)时输出的是member.1而不是members / 1

以下代码: 索引视图:

<% @members.each do |member| %>
<tr>
<td><%= link_to member.name, members_path(member.id) %></td>
<td><%= member.email %></td>
<td><%= member.id %></td>
<td><%= member.admin %></td>
</tr>
<% end %>

路线:

devise_for :members
match 'members/' => 'members#index'
match 'members/:id' => 'members#show'

会员控制员:

class MembersController < ApplicationController

  def index
    @members = Member.all
    respond_to do |format|
     format.html # show.html.erb
     format.json { render json: @student } 
   end 
  end

  def show
    @member = Member.find(params[:id])
  end

end

Rake Routes:

members        /members(.:format)               members#index
               /members/:id(.:format)           members#show

有任何帮助吗?干杯:)

2 个答案:

答案 0 :(得分:0)

必须添加

, as: :show_member

所以在我的路线文件中我必须为那个

定义一个路径
match 'members/:id/' => 'members#show', as: :show_member

并在索引视图文件中添加:

show_member_path(member)
现在

和rake路线:

members GET    /members(.:format)               members#index
show_member GET    /members/:id(.:format)           members#show

干杯:)

答案 1 :(得分:0)

这不是您正在寻找的辅助方法。 members_path创建members#index的路径,并将format作为唯一参数。

链接到members#show的帮助者是member_path。虽然它不是由match自动创建的:

# config/routes.rb
resources :members, only: [:index, :show]
# Remove `only` to get the remaining restful routes

# and in your view:
<%= link_to member.name, member_path(member.id) %>

您也可以直接传递该成员,link_to会自动调用to_param,默认情况下会返回id

<%= link_to member.name, member_path(member) %>

或者,您可以直接传递您的成员而不使用路径助手:

<%= link_to member.name, member %>

在此处阅读更多内容:http://guides.rubyonrails.org/routing.html