Rails Friendly_id完全停止

时间:2013-06-02 00:42:53

标签: ruby-on-rails friendly-url friendly-id

我正在使用Friendly id来允许我的Rails应用中的用户名自定义查询。

所以说用户的用户名是loremipsum

rails会显示此http://localhost:3000/users/loremipsum,这非常正常

但请说用户的用户名为lorem.ipsumlorem-ipsum

如何在网址中显示导轨lorem.ipsumlorem-ipsum,因为它目前占据第一部分,然后说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

2 个答案:

答案 0 :(得分:0)

使用slug来处理它,你应该能够在模型上定义它:

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

答案 1 :(得分:0)

这更有可能是路由问题,因为rails以loremparams[:id]格式传递ipsum

https://stackoverflow.com/a/7781314/308701解释了如何禁用此功能,但需要注意的是,您无法请求其他格式,例如xmljson等等。