問題タブ [best-in-place]
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 - Rails 'Best in Place' Gem - Flash 成功メッセージ?
Rails アプリでのインプレース編集に best_in_place ジェム (https://github.com/bernat/best_in_place) を使用しています。私のコントローラーには次の行があります:
gem は検証エラーが発生した場合にゴロゴロ通知を生成しますが、更新が成功した場合に通知をフラッシュする方法はありますか? ドキュメントのどこにもこれが見つからないようです.bipがJSONで応答するという事実は、全体が非常にブラックボックスに見えるようにします.
どんな助けでも大歓迎です。
jquery - Rails 3.2.1 では best_in_place は関数エラーではありません
Rails 3.2.1 アプリケーションに best_in_place gem を使用しています。私の開発に間違いはありません。本番環境でアプリケーションを実行しようとすると、スクリプト エラーが発生します
私のビューページには、次のコードがあります
datagrid - 新しいレコードの作成と既存のレコードの更新の両方を可能にするスパース グリッド ビュー
RoR でシンプルな道場出席アプリを作成しようとしていますが、現在、少なくとも出席記録の表示、作成、更新に関して、自分ができるとわかっていることと、できるようにしたいことの間で立ち往生しています。 . (アプリの残りの部分は私には簡単に思えます。)
問題のテーブルのスキーマは次のとおりです。
これには基本的な scaffold ビューを利用できることはわかっていますが、それを行うのは面倒です。つまり、新しい出席記録、日付、学生、および費やした時間を選択し、保存し、インデックス ビューに戻る (特定の月に限定されるように変更されています)。 . これは、1 回のレコード作成で多くのクリック数です。それ自体は恐ろしいことではありませんが、新しいエントリごとに退屈になっていることがわかります. とはいえ、システムのユーザーがその学生に間違った時間数が入力されたことに気付いた場合、このアプローチを更新するのは非常に簡単です。必要に応じて、レコードを完全に削除するのは非常に簡単です。
上記を次のように強化することができました。
- インデックス ビューには、クラスに出席したかどうかに関係なく、特定の月のすべての生徒が一覧表示されます
- おそらく、学生の名前を新しい出席ページへのリンクにします(上記で説明)
- 学生が問題の日付のその月のエントリを持っている場合、グリッド内のそのセルは、そのレコードの出席の編集ページへのリンクになります。
- [出席の編集] ページの下部に [削除] リンクを追加できると思います
私が本当に欲しいのは、次を提供するビューです。
- 一目でわかる月のグリッド (ビューの上部にある月の名前、理想的には jQuery の日付ピッカーを使用)
- グリッドの最初の列にすべての生徒がリストされます
- 各列のヘッダー (最初の列の後)、1 から N (月の最終日) までの月の日
- 特定の日付に学生の出席記録が存在する場合は、セルに時間を表示します
- 特定の日付の学生の出席記録が存在しない場合は、何も表示しません (または「-」または同様のプレースホルダーを表示します)。
私はこれを理解しようとしてぐるぐる回ってきました。グリッドがすべてのセルに値を持っている場合 (つまり、すべての学生が表示されている月のすべての日のレコードを持っている場合)、best_in_placeを使用してこれを乗り越えることができます。やった、やった。しかし、このようにテーブルを肥大化させることは、テーブルの非常に非効率的な使用のように思えます。特に次のことを考えると、a) 学生は、非常にひどいことをして禁止されない限り、名簿に永久に残る可能性が高いでしょう。道場から、b) 利用可能なすべてのクラスに誰も出席しない、c) 利用可能なクラスの大部分に参加する生徒はほとんどいない。レコードを表示するには、レコードが存在する必要があることを除いて、best_in_class_if で動作させることを検討しました。ああ。
私は最近、これを乗り越える方法として簡単に希望を与えてくれたfind_or_create_byについて知りました。次に、このcreate_or_update_byを作成するためのこのアプローチを知り、これを乗り越える方法として別の希望の光を与えてくれましたが、それを実現するためのアプローチ方法についてはまだ何かが私を悩ませていました。つまり、存在しないレコードへのグリッド (html テーブル) に何らかの参照を作成する必要がありますが、これは達成できないようです。(レールコンソールから create_or_update_by をテストしているときにも問題が発生しましたが、その理由を突き止めるLocalJumpError: no block given (yield)
ことができませんでした。)
月ごとの出席状況ビューで取得しようとしているルック アンド フィールがよくわからない場合は、それを Excel スプレッドシートと考えてください。セルが空の場合は値を追加でき、セルに値がある場合は変更できます。(青空: class_hours の値がゼロに設定されている場合は、レコードを削除します。)
ルートのドキュメントとコントローラーのドキュメントでインスピレーションを見つけようとしました。喜びはありません。
以下の点が考慮されている限り、代替の RoR ソリューションを喜んで検討します。
- その月のクラスに出席したかどうかに関係なく、システム内のすべての学生を一覧表示する出席月の一目でわかるビュー ( DataTablesを使用して、私はすでに活用に成功しています)
- 学生の出席を追加/更新するためのシンプルなアプローチ。理想的には、基本的な scaffold ビューよりも少ないクリック数で済みます
乾杯。
編集:さらに熟考すると、1つの合理的なアプローチは、出席テーブルにまだ表現されていないデータグリッド内のセルを、パラメーターstudent_id、class_date、およびclass_hoursを/に渡すリンクにすることです。出席/新しいルート (パラメーターを受け入れて使用するように scaffold から変更されたもの)、および同様に、既に値を持っているセルをクリックする場合。(後者の場合でも best_in_place を使用することを検討できますが、UI の一貫性を保つためには、おそらくそれを避ける必要があります。)
より良い方法でこれにアプローチする絶好の機会を逃した場合でも、洞察に満ちた提案を喜んで受け入れます.
ruby-on-rails - Railsのbest_in_place gem入力に厄介な余分なスペースがあります
Rails 3.2.3、Twitter Bootstrap、および best_in_place gem を使用してインプレース編集を処理しています。
問題は、クリックして入力を編集するたびに、入力の右側に大量の余分なスペースが配置されることです。
前:
後:
他の誰かがこの問題を抱えていますか? 私は何をすべきか?
パディングとマージンを明示的に 0 に設定し、幅を設定されたピクセル幅 (td 幅よりも小さい) に設定しようとしました。
ありがとう。
ruby-on-rails-3 - devise と best_in_place gem を使用する Rails 3 は、サブスクライバー モデルを更新しません
サブスクライバーモデルでdeviseを使用するRails 3アプリケーションがあります。加入者に best_in_place gem を使用してアカウント情報をその場で更新してもらいたいのですが、データベースを更新することができないようです。画面は更新されますが、データベースは更新されません。
このエラーは、既存のサブスクライバーが悪いことを示唆しているように見えますが、サブスクライバーが存在しない場合、そのサブスクライバーを更新することは不可能であるため、そうではありません。
私がやりたいことは、ユーザーが自分の詳細を表示するsubscriber/accounts#showページからその場で自分の情報を更新できるようにすることだけです.
私のサブスクライバー/アカウントコントローラーにはこれがあります:
サーバーログには常に次の結果が表示されます。
私のショーページは次のようになります。
サブスクライバーのルートは次のようになります。
コンソールを使用してサブスクライバーのファーストネームを更新しようとしているのを確認したところ、サブスクライバーが存在するという同じメッセージを受け取り、トランザクションがロールバックされました。これはDeviseの何かが原因ですか?
service - Web サービス操作でパラメーターをフォーマットするためのベスト プラクティスは何ですか?
特定の Web サービスの操作が複数の特定の形式のパラメーターを受け入れる場合、このシナリオを処理するためのベスト プラクティスは何ですか (パラメーターをどこでフォーマットしますか)?
フォーマットを実行できる場所は 2 つあります。
- 消費者側で
- Web サービス操作内
あなたの提案をしてください。
以下はシナリオの例です。生年月日が Web アプリケーションによって取得されるとします。これは Web サービスを消費します。また、これらの日付が YYYY-MM-DD 形式でデータベースに格納されているとします。ユーザーは、次の形式で日付を入れることができます。
- YY-MM-DD
- YYYY-MM-DD
ユーザーから提供された日付を、データベースに格納されている日付と比較する必要があるとします。前述のように、指定された日付は Web アプリケーション内でフォーマットすることも、Web サービス コード内で行うこともできます。
ruby-on-rails-3 - Rails- モデル自体で定義された配列コレクションに best_in_place gem を使用したインプレース編集
best_in_place gem を使用したインプレース編集について説明しているRailsCasts#302を見ました。性別オプションについては、Ryan が show.html.erb 内の配列を使用してドロップダウン ボックスにします (彼が配列を明示的に定義している性別のセクションを参照してください)。
しかし、私が欲しいのは、次のようにモデル自体の内部で配列を定義したことです:(私の配列要素は単純ではなく、数が少ないため)
例:
user.rb
best_in_place
構文を使用して、この配列要素をドロップダウンとして使用するにはどうすればよいですか。
PS:私はこのようなことを試しました
しかし、未定義のメソッドauthencity_typesと書かれています
ruby-on-rails-3 - best_in_place の値とは異なるスタイルのプレースホルダー
CSS を介して best_in_place 値とプレースホルダー (data-nil="enter your number") を区別する方法がないように見えるため、何かが足りないと思います。紛らわしくないように、プレースホルダーのスタイルを実際の値とは異なるスタイルにしたいだけです。
イベントを調べたところ、実際に要素にクラスを追加できましたが、最初にページに表示されたときに、そのクラスを追加するためのイベントがありません。この時点で、各 $('best_in_place') を繰り返し処理し、nil 値をスパン内の html の値と比較しますが、これを行う前に、何かを見逃していないかどうか疑問に思っています。
では、best_in_place で値が設定されていることを区別する方法はありますか?
コードで理解が深まる場合: これは機能し、クラスを best_in_place に追加または削除するだけですが、ユーザーがフィールドを編集したときにのみ設定され、最初のページの読み込みでは設定されません。
ruby-on-rails-3 - best_in_place 日付ピッカー形式
Rails プロジェクトでは、best_in_place
datepicker を使用していますが、日付形式に問題があります。
によって生成された html best_in_place
:
data-original-content
日付形式からわかるyy-mm-dd
ように、日付を選択すると、次のようになります09/03/1916
で日付形式を設定しようとしましたapplication.js
:
しかし、それは役に立ちませんでした。
ruby-on-rails - ActiveAdmin にレコードを追加するスプレッドシートのような方法
ActiveAdmin で多くのレコードを追加する方法を探しています。具体的には、ストアとプログラムの 2 つのモデルがあります。店舗には多くのプログラムがあります。
標準の ActiveAdmin 作成ビューを使用してストアを追加してもかまいません。しかし、スプレッドシートのような方法でプログラムを追加するより高速な方法が欲しいです。best_in_place (https://github.com/bernat/best_in_place) を調べましたが、レコードを追加するのではなく、編集するだけです。
助言がありますか?とても感謝しております。