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#indexformat

リンク先のヘルパーmembers#showはですmember_pathmatchただし、 :によって自動的に作成されるわけではありません。

# 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 に答える