2013-06-02 3 views
0

Я использую Friendly id для разрешения пользовательских запросов, от имени пользователя, в моем приложении Rails.Rails Friendly id Fullstops

Так сказать, имя пользователя пользователя является loremipsum

рельсы будет отображать этот http://localhost:3000/users/loremipsum, и это работает прекрасно

, но говорят, имя пользователя пользователя является lorem.ipsum или lorem-ipsum

Как я мог бы сделать дисплей рельсы, lorem.ipsum или lorem-ipsum в URL-адресе, поскольку в настоящее время он занимает первую часть, а затем говорит Couldn't find User with id=lorem

Мои Пользователи Контроллер

class UsersController < ApplicationController 


    def index 

    @users = User.all 


    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @movies } 
    end 
    end 

    def search 

    @movies = @search.result 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @movies } 
    end 
    end 
    def show 

    @user = User.find(params[:id]) 

    @movies = @search.result 

    end 

    def sign_up 
    @user = User.new 

    end 

    def sign_in 

    end 
    def create 

    @user = User.create(params[:user]) 
    if @user.save 
     sign_in @user 
     flash[:success] = "Welcome to the Sample App!" 
     redirect_to @user 
    else 
     render 'new' 
    end 
    end 

def edit 

    @user = @current_user 
end 

    def update 


    if @user.update_attributes(params[:user]) 
     sign_in @user 
     flash[:success] = "Profile updated" 
     redirect_to @user 
    else 
     render 'edit' 
    end 
    end 



    def destroy 

    User.find(params[:id]).destroy 
    flash[:success] = "User destroyed" 
    redirect_to users_path 
    end 


    def edit 

    end 

end 

ответ

0

Использование слизняка для ручки это, вы должны быть в состоянии определить это на модели:

class User < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :username, use: :slugged 

    def normalize_friendly_id(string) 
    super.upcase.gsub("-", ".") 
    end 
end 

ссылка: customizing friendly_id slugs

Изменение User.find к User.friendly.find в контроллере

User.friendly.find(params[:id]) 

Quick Start Using Friendly_id

+0

я все еще получаю ошибку Не удалось найти пользователя с id = lorem – PMP

+0

, и он читает ipsum в качестве формата – PMP

+0

У вас есть атрибут slug (slug: string) в вашей модели пользователя? –

0

Это скорее маршрутизации вопрос, как рельсы проходит через lorem, как params[:id] и ipsum как формат.

https://stackoverflow.com/a/7781314/308701 объясняет, как отключить эту функцию, однако нюанс в том, что вы не будете иметь возможность запрашивать другие форматы, такие как xml, json и т.д. ...

 Смежные вопросы

  • Нет связанных вопросов^_^