問題タブ [friendly-id]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - FriendlyId によって引き起こされた Controller#create の NoMethodErrod を修正するにはどうすればよいですか
FriendlyId gem を使用する Rails アプリがありますが、最近、開発とテストで NoMethodErrors が発生し始めました。この問題は最近始まったばかりで、プロジェクトを数回繰り返しています (heroku の「ステージング」はまだ機能しています)。
この問題は、フレンドリ ID 用に設定されたモデルの新しいレコードを作成する際に発生します。これらのモデルの 1 つを次に示します。
テストの実行時に受け取るエラーは、PlaylistsController#create の NoMethodError であり、エラー メッセージの本文は次のとおりです。
そして、トレースはここから始まります:
「has friendly_id」行をコメントアウトすると、create 呼び出しが再び機能するため、それが Friendly_id gem に関連していることを確認しました。関連するrakeタスクも試しました: running
同じエラーが発生します。代わりに、slug テーブルでダウン マイグレーションを実行し、rails g friendly_id とアップ マイグレーションを再実行してから実行します。
テーブルを完全に削除し、それ以降はプレイリスト#show アクションを試すだけで同じエラーが発生します。
これが十分な詳細であることを願っています。どうすれば正常な状態に戻るのか、完全に混乱しています。
ruby-on-rails - Rails - FriendlyId と条件
モデルの投稿があります。これは、belongs_to カテゴリ (friendly_id を使用) です。ここで、カテゴリ内のすべての投稿を一覧表示したいと考えています。インデックス ページを取得するには、http://mysite/posts/category/_category_slug_のようなリンクを使用します。そのために、次のルートを作成しました。
そして、私のポストコントローラーで私は得ました:
それは本来のように機能しますが、それがfriedndly_idの方法だとは思いません。
これを達成するためのより良い方法はありますか?ご協力いただきありがとうございます。
ruby-on-rails-3 - Rails 3:gsubを使用する方法、または空白文字を「-」に置き換える方法は?
私は名前:文字列のアーティストモデルを持っています。そして、私が今持っている /users/1/artists/1/posts の代わりに /users/1/artists/jimi-hendrix/posts が欲しい
問題は、アーティスト名に Friendly_id を使用できないと思うことです。これは、同じアーティスト名が複数あるためですが、すべての「ジミ・ヘンドリックス」エントリに jimi-hendrix などの同じスラッグを使用したいためです。例:
Friendly_id は次のようになります: (これは私にはありません) /users/3/artists/jimi-hendrix/posts /users/55/artists/jimi-hendrix--2/posts /users/106/artists/jimi -ヘンドリックス--3/posts
私が考えているのは、id の代わりにそのアーティスト名パラメーターをコントローラーに渡すことです。しかし、名前を取得してすべての空白を「-」に置き換えてから、空白をコントローラに追加し直す必要がありますか?
これが私のリンクになります: (artist.name.gsub!() のようなことはできますか??)
次に、コードをコントローラーに戻すときに逆にしますか?
def index @name = params(:artist_id).gsub() # ? @posts = ... .... 終了
または、属性に重複した名前がある場合、--2、--3 を追加しないように、Friendly_id に一意でないスラッグを含める方法を誰かが知っていますか?
ruby-on-rails - Friendly_id と新しいレコード
私は Friendly_id 4.0.0.beta8 を使用しており、スラッグを利用する URL を生成したいのですが、モデル ID はまだ含まれています。Friendly_id が before_validation のスラッグを生成するようです。ただし、この時点 (保存前) ではもちろん、利用可能なモデル ID がないため、 Friendly_id は ID なしでスラッグを作成します。
最初の保存後に新しいレコードに id のスラッグがあることを確認するにはどうすればよいですか?
translate - Friendly_id を翻訳する
使用:
レール: 3.0.3 Friendly_id: 3.2.1
(現在) 2 つのロケール、:se と :en を使用して Web サイトを構築しています。ここでは、Friendly_id を使用して SEO に適した URL を取得しています。
現在、問題なく動作していますが、ロケールで動作するようにしようとしており、常に行き止まりになります。
何が機能しますか:
現在 cached_slug 列に存在する名前の Friendly_id を作成しました。これは正常に動作し、Calculation.find("calculation-name") を使用して url:s を取得することもできます (例: domain.com/calculation-name)。
うまくいかないこと: http://rdoc.info/github/norman/friendly_id/master/FriendlyId/I18n を実装した後、2 つの列 slug_en と slug_se があり、各 Friendly_id の翻訳バージョンが含まれています。そのガイドにインデックスも追加しました。
ただし、アプリでそれらを見つけることができません (Calculation.find("this-swedish-translation") または url domain.com/this-swedish-translation のいずれでも)。
モデルの何かを変更する必要があるかどうかわかりません。has_friendly_id の I18n に関連するすべての属性には、次のようなエラー メッセージが表示されます。
- default_locale
- ロケール
:use => slugged や :use => :locale などの属性も使用できません。
私の最初の推測では、I18n/ロケールをサポートしていないバージョンを使用しているのではないでしょうか? ドキュメントが実際に何を参照しているのかを理解するのは難しいです...
しかし、私の大きな疑問は次のとおりです。私の仮定やコードの何が問題なのですか? アプリで slug_en と slug_es を使用するようにできないのはなぜですか?
ruby-on-rails - update_attributes で Friendly ID と i18n を使用すると、上書きが発生する
使用: - Rails 3.0.3 - Friendly_id 4.0.0 Beta 11 - Windows - i18n (0.6.0, 0.5.0) (「gem list」による)
セットアップ: スウェーデン語と英語を言語として使用した計算に関する多言語 Web サイトを持っています。Friendly_id を使用して、seo フレンドリーな URL を作成しています。
私のmysqlテーブルには、「slug」、「slug_se」、「slug_en」という列があります。「slug」列を使用する必要があるかどうかはわかりませんが、「slug_en」と同じです。
問題: 「update_attributes」を使用すると、「slug_se」が「slug」(デフォルトでは英語) で上書きされます。したがって、「slug」の値は「slug_se」に書き込まれます。
トラブルシューティング: - この問題を Google で調べたところ、Google フォーラム (http://groups.google.com/group/friendly_id/browse_thread/thread/154f4a5024e23418) で (未回答の) フォーラム スレッドが 1 つだけ見つかりました。- update_attributes の代替手段を見つけようとしました。
質問: - 「スラッグ」カラムを使用する必要はありますか? - ID も更新しようとしない update_attributes の代替手段はありますか? - 私がやっていることに、問題の原因となっている何か問題があると思いますか?
コード: モデル:
ruby-on-rails - STI で Friendly_Id を使用するには?
Friendly_id (4.0.0.beta12) gem を STI モデルで適切に動作させるためのセットアップ方法について、かなり困惑しています。
モデルのセットアップは次のとおりです。
私がこのようなことをしようとすると:
結果のエラーは次のとおりです。
問題は、 Friendly_id の select がタイプが 'Ford' に設定されたスラッグを探し、クリーンになることです (スラッグ 'test' はすでにタイプ 'Toyota' のレコードに属しているため)。「test」という名前のスラッグが存在しないと仮定すると、「test」というスラッグでレコードを保存しようとし、すべてが地獄に落ちます。
何か案は?
ありがとうございました!
ruby-on-rails - ActiveAdmin と Friendly_id を使用する場合の ActiveRecord::ReadOnlyRecord
私は最近プロジェクトで ActiveAdmin を使い始めました。ほとんどすべてがうまく機能しますが、それを Friendly_id gem と組み合わせて使用すると問題が発生します。ID が readonly である Friendly_id 属性が原因で、フォームに ActiveRecord::ReadOnlyRecord がスローされます [私は信じています]。
読み取り専用属性であるため、最後の行が原因であると推測しています。これは私のフォームではなく、PATH にあります。
http://localhost:5000/manage/spaces/the-kosmonaut/edit
ID を更新しようとして、これを修正するにはどうすればよいですか?
ActiveAdmin のフォームは次のようになります。
更新:これも機能しないため、Friendly_id ではありませんか?
@watsonの提案を使用してみましたが、うまくいくはずでしたが、それでも同じエラーが発生しました;-(
http://localhost:5000/manage/spaces/6933/edit
コンソールで record.readonly を使用してレコードを確認すると? それはfalseを返します
更新更新: scope_to を削除すると、問題が修正されます。
唯一の問題は、ユーザーが所有していないレコードを表示できないようにするために scope_to が必要なことです。私の推測では (scope_to は通常 has_many で動作すると仮定しているため)、私の HABTM 関連付けは何らかの奇妙さを引き起こしているのでしょうか? つまり、ユーザー <-- HABTM --> スペース?
ruby-on-rails - example.com/profiles/1をexample.com/usernameに移動し、friendly_idとusernameをユーザーモデルから使用するにはどうすればよいですか?
railsのfriendly_idに赤いドキュメントがあります。簡単です。特定の属性をスラッグに設定します。
example.com/username
だからあなたは私のジレンマを見る。プロファイルモデルに列のユーザー名がありません。どうすればusermodel、usernameフィールドをリンクして、friendly_idでexample.com/usernameを実行できるようになりますか?
確かにこれは比較的簡単です。
ruby-on-rails - Rails: Friendly_id は ID としてスラッグではなく名前を使用します
使用: Rails 3.0.3 Friendly_id: 4.0.0.beta11
domain.com/cars/mitsubishi のような Friendly_id url:s など、すべてが機能するアプリケーションの完全に機能する開発バージョンを作成しました。
現在、アプリケーションを Heroku にデプロイしていますが、Friendly_id が何らかの理由で機能しません。
問題: Heroku にデプロイすると、"name" が slug_en や slug_se ではなく、 Friendly_id として表示されます。たとえば、Calculation.first.friendly_id は、slug_en のコンテンツである「i-am-a-calculation」とは対照的に、「I am a Calculation」を提供します。
モデル(計算)
移行 (計算):
移行 2:
問題は、(heroku db:push) ローカル データベースを Heroku にプッシュ (heroku db:push) する必要があることです (データがいっぱいであるため)。したがって、移行をどれだけ信頼できるかわかりません。私が理解している限り、それらは db:push で上書きされます。
ローカルでは問題なく動作するため、これはあまり重要ではありません。I18n.locale = :se を使用すると、slug_se が id として、slug_en が :en として返されます。
言及する価値があるのは、Heroku は postgre を使用し、私は mysql をローカルで使用していることです。
私の質問:
- name-attribute を slug_en または slug_se の代わりに Friendly_id として取得した場合、通常何が問題になる可能性がありますか
- ここに提出したコードに問題はありますか?
- postgre / mysql-differences が原因でしょうか?
- Heroku のインストールでインデックスが作成されないのは問題ですか?
ありがとう!