0

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

但是,在我的成员索引视图文件中,当传递路由 members_path(member_id) 时,它输出的是 members.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

耙路线:

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

有什么帮助吗?干杯:)

4

2 回答 2

0

不得不添加

, as: :show_member

所以在我的路由文件中,我必须为此定义一个路径

match 'members/:id/' => 'members#show', as: :show_member

并将其添加到索引视图文件中:

show_member_path(member)

并且耙路线现在是:

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

干杯:)

于 2013-02-05T14:34:24.867 回答
0

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

链接到的助手members#showmember_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

于 2013-02-05T17:14:45.227 回答