代码之家  ›  专栏  ›  技术社区  ›  hometoast

如何创建一个了解完整路由的视图。(栏杆3)

  •  0
  • hometoast  · 技术社区  · 14 年前

    我如何设计我的视图,使它“记住”它的路线?所以“后退” /team/1/members/1 链接到 /team/1/members /members/1 链接回 /members ?

    我有一些 team member . 团队有很多成员。

    我的路线允许我查看团队中的所有成员。

      resources :teams do
        resources :members
      end
      resources :members do
        resources :member_parts
      end
    

    我目前已经尝试保持路线的一致性。但是这样做的话,我似乎要重复很多,并在视图中添加许多逻辑元素。( 这似乎是错的 )

    摘录 app/views/members/show.html.erb

    <%= link_to 'Edit', params[:team_id].nil? ? edit_member_path(@member) : edit_team_member_path(@member.team,@member) %> |
    <%= link_to 'Back', params[:team_id].nil? ? members_path : team_members_path(@member.team) %>
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   klew    14 年前

    urligecne resource_controller plugin url helpers object_path collection_path

    # application helper
    def collection_path
      request.request_uri.gsub(/\/[\d]+[\/]*$/, "")
    end
    

    <%= link_to "Back", collection_path %>
    

    edit edit_object_path

    def edit_object_path
      request.request_uri.chop('/') + "/edit"
    end 
    

        2
  •  2
  •   Yannis    14 年前

    before_filter :store_location
    
    def store_location
      session[:return_to] = request.fullpath
    end
    
    def redirect_back_or_default(default=root_path, flash=nil)
      session[:return_to] ||= default
      redirect_to(session[:return_to], flash)
      session[:return_to] = nil
    end
    

    match '/back' => 'application#redirect_back_or_default

    <%= link_to 'Back', '/back' %>
    

        3
  •  2
  •   dombesz    14 年前

    paths = []
    paths << @member.team if params[:team_id]
    paths << @member
    polymorphic_path(paths,:action=>:edit)
    
    paths2 = []
    paths2 << @member.team if params[:team_id]
    paths2 << :members
    polymorphic_path(paths2)
    

    Rails api