我安装了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
有任何帮助吗?干杯:)
答案 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 %>