-1

ユーザーが即時公開または予定公開のいずれかでコンテンツを送信できるようにする他の誰かのプロジェクトを修正しています。これを選択するためのラジオ ボタンのペアと、「スケジュール済み」のラジオ ボタンが選択されている場合に JavaScript によって有効にされる日時フィールドがあります。

<%= f.hidden_field :scheduled_state %>
<%= f.radio_button :immediate_or_scheduled, :immediate, :checked => "checked", :id => "pub_imd" %>

<%= f.radio_button :immediate_or_scheduled, :scheduled , :id => "pub_sch" %>
        <label>Date/Time:</label>

        <%= f.datetime_select :scheduled_start,
                              {:include_blank => false,
                                :default => 3.days.from_now,
                                :start_year => Time.now.year} %>

隠しフィールドが何のためにあるのか完全にはわかりません。それが次の調査ポイントです。とにかく、問題は、フォームが送信されたときに、パラメーターが送信されないことがあることです。私は雑種の出力をコピーしますが、表示されるのは :scheduled_start(1i) => 2010 がないことだけです。それが nil であるとは言っていません。そのパラメーターがないだけです。

本当に気になるのは、これが一貫した問題ではないということです。スケジュールされた日付を正しく指定して 3 回連続して送信しても、失敗します。私は特定の日付と関連付けることができませんでした.いくつかは他よりも混乱しているように見えますが、本当に一貫しているものはありません.

私の試みた修正-

  • もともと :include_blank が true になっていて、うまく送信できていないのではないかと思っていました。無関係でした。

  • 選択フィールドを無効/有効にする JavaScript をオフにしようとしましたが、無関係でした。

  • 純粋なhtmlでフォームをハードコーディングしようとしましたが、違いはありませんでした。

  • 自分のパラメーターにカスタム レールの select_tags を入れてみて、コントローラーでそれらをピックアップしてパラメーターに追加しました。それでも役に立たず、即時公開オプションを破りました。

誰かが私が調べることができる新しい方向性を持っているなら、それは素晴らしいことです. ありがとう!

4

2 に答える 2

0

元投稿者は私ですが、未登録ユーザーで投稿したのでコメントできません。管理者がこれをコメントにすることができれば、それは素晴らしいことです。

OK、ネット ペインを確認しましたが、失敗した場合でも、ポスト リクエストでフォームからパラメータを送信しています。form_for ヘルパーを使用しています。パラメータをキャプチャしてオブジェクトに割り当てるセクションをコントローラに書き込んでみました

@scheduled_start_hack = "#{params[:press_release][:"scheduled_start(2i)"]}.#{params[:press_release][:"scheduled_start(3i)"]}.#{params[:press_release][:"scheduled_start(1i)"]} - #{params[:press_release][:"scheduled_start(4i)"]}:#{params[:press_release][:"scheduled_start(5i)"]}#{@meridian}"

@press_release = PressRelease.new(params[:press_release])

@press_release.scheduled_start = @scheduled_start_hack

そのスニペットには、私があえて投稿しなかった条件文がたくさんあります。そのため、物事が未定義であるか、スケジュールされた開始ではないか、正しくフォーマットする必要がないなどの場合に備えて、それを実行しませんでした。 @scheduled_start_hack は正しくフォーマットされていますが、以前のように「スケジュールされた開始を空白にすることはできません」と言ったため、@press_release.save は拒否されました。

エラーは主に本番環境で発生することに気付きました。ローカル開発で失敗してから長い年月が経ち、本番で成功してから長い年月が経ちました。

ご回答ありがとうございます。

于 2010-08-19T15:12:26.713 に答える
0

フォームの上部を見ないと、form_forステートメントを使用しているかどうかわかりませんが、使用していない場合は、オブジェクトを最初の引数として追加できます

f.datetime_select 'post', 'scheduled_start', {options hash here}

ここのAPI http://apidock.com/rails/ActionView/Helpers/DateHelper/datetime_select

于 2010-08-19T02:01:50.603 に答える