0

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

所以说用户的用户名是loremipsum

rails 会显示这个http://localhost:3000/users/loremipsum,这工作得很好

但说用户的用户名是lorem.ipsumlorem-ipsum

我怎样才能让rails显示,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
4

2 回答 2

0

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

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

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

参考:自定义friendly_id slugs

在您的控制器中更改User.findUser.friendly.find

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

使用 Friendly_id 快速入门

于 2013-06-02T02:42:27.170 回答
0

这更有可能是一个路由问题,因为 rails 通过loremasparams[:id]ipsumas 格式。

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

于 2013-12-17T23:16:48.123 回答