繁体   English   中英

漂亮的网址

[英]Pretty urls in rails

我正在努力使其正常运作。 这是我现在的耙路:

groups GET    /groups(.:format)                           groups#index
                         POST   /groups(.:format)                           groups#create
               new_group GET    /groups/new(.:format)                       groups#new
              edit_group GET    /groups/:id/edit(.:format)                  groups#edit
                   group GET    /groups/:id(.:format)                       groups#show
                         PATCH  /groups/:id(.:format)                       groups#update
                         PUT    /groups/:id(.:format)                       groups#update
                         DELETE /groups/:id(.:format)                       groups#destroy

我想做的是从链接中删除“组”并添加slug而不是id。 现在是我的控制器:

class GroupsController < ApplicationController
  before_action :find_group, only: [:show]
  after_action :assign_slug, only: [:create, :update]

  def index
    @groups = Group.all
  end

  def show
  end

  def new
    @group = Group.new
  end

  def create
    @group = Group.new(group_params)
    if @group.save
      flash.notice = "Group has been successfully created!"
      redirect_to @group
      binding.pry
    else
      flash.alert = "oops!"
      redirect_to action: :new
    end
  end

  private
    def group_params
      params.require(:group).permit(:title, :description, :country, :city, :category_id)
    end

    def find_group
      @group = Group.find_by_slug(params[:slug])
    end

    def assign_slug
      @group.update(slug: @group.title.parameterize)
    end

end

我该如何运作? 谢谢。:)

如果这是您想要的:

routes.rb

get ':slug', to: 'pages#show', as: :groups_show
put ':slug', to: 'pages#update', as: :groups_update
delete ':slug', to: 'pages#destroy', as: :groups_delete

这样,子弹将作为参数被捕获并发送到控制器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM