0

Railsのブラウザ文字列について質問があります。

たとえば、ルート付きのRailsアプリがあります。

resources :posts

そしてこのリソースは作成します:

post/:id

post/21
post/167
post/356

しかし、私は簡単なブログを作成し、「:id」の名前を「:id」に変更したいと思います

post/some-name
post/another-name
post/another-different-name

投稿では、タイトル、テキストフィールドがありますが、これを行う方法がわかりません

これは:idを操作することで実現できることを私は知っています

この質問の詳細な回答を含むリンク、または簡単な例を投稿できますか

4

3 に答える 3

1

もちろん、URLに必要なものを何でも入れることができ、実際にはそれについてのレールキャストがあります: http://railscasts.com/episodes/63-model-name-in-url

URL に model.id も保持することをお勧めします (読みやすい)。そうでない場合は、投稿名が一意でなければならないことを意味します。

/post/2465-my-pretty-post-name

また、gem Friendly_id と関連するレールキャストもあります: http://railscasts.com/episodes/314-pretty-urls-with-friendlyid

それが役立つことを願っています。

于 2012-09-18T19:29:42.847 に答える
0

なぜ/post/:idを変更したいのですか?/ post /:id/commentsのようなものを達成できます

あなたはあなたのroutes.rbでこのようなネストされたリソースを使用してそれを行うことができます

リソース:投稿はリソースを実行します:コメントは終了します

詳細については、こちらを確認してください http://guides.rubyonrails.org/getting_started.html

于 2012-09-18T19:13:41.683 に答える
0

モデルに to_param メソッドを追加すると、それを URL システム内で使用できます。

class SomeModel < ...

  def to_param
    self.title
  end

end

次に、コントローラー内で、find メソッドに使用される ID 属性の代わりに title 属性を使用してモデルを取得するフィルターを設定します。

before_filter :setup_record

def setup_record
  @record ||= Record.find_by_title(params[:id])
end

タイトルが一意のままであることを確認する必要があります。タイトルを変更した場合は、他のすべての以前の URL を破棄するか、古い名前の履歴を保持する必要があります。

于 2012-09-18T19:33:50.460 に答える