フォームのアンケートの一部です。特定の回答が選択されている場合は、フォームに追加の質問が表示されます。私はこれらの質問に対する回答を保存し、回答を変更できるようにする必要があります。私は意思決定をa)の場所で行い、b)Railsで行うので、私は@assessment
オブジェクトであり、@assessment
オブジェクトの状態に基づいてさまざまな質問を表示または非表示にします。JavaScriptからRailsコントローラのアクションをトリガーする
私は、AJAXを使って往復を設定する方法について頭を悩ましています。私のフォームは部分的なので、@assessment
オブジェクトが更新されているので、私はそれをリロードすることができます。私が見た例のほとんどは、フォームを送信し、POSTアクションを使用してRailsオブジェクトにパラメータを渡し、JavaScriptを使用して部分を再レンダリングする例です。私はラジオボタンonClickを使ってそれをやろうとしていますが、実際に新しく更新された@assessment
オブジェクトを実際に取得する方法を理解することはできません。
どうすればよいですか?私はもっと良い方法を見つけようと努力すべきではありませんか?
ここでは簡略化した形部分、_form.html.hamlです:@assessmentがその上に期日に自動的に作成されるので、これは(edit.html.hamlからこのdiv要素に含まれている
= bootstrap_form_for @assessment, as: :put, url: project_assessment_path(@project), remote: :true do |f|
.panel.panel-default
.panel-heading
.panel-title Lorem ipsum dolor sit amet
.panel-body
= answer_question_1(@project)
- if show_question(@assessment, :question_2)
.panel.panel-default
.panel-heading
.panel-title Lorem ipsum dolor sit amet?
.panel-body
= f.radio_button :question_2, true, label: "Yes", inline: true, remote: :true
= f.radio_button :question_2, false, label: "No", inline: true, remote: :true
- if show_question(@assessment, :question_3)
.panel.panel-default
.panel-heading
.panel-title Lorem ipsum dolor sit amet?
.panel-body
= f.radio_button :question_3, true, label: "Yes", inline: true, remote: :true
= f.radio_button :question_3, false, label: "No", inline: true, remote: :true
...
- if @assessment.complete?
- case @assessment.assessment_message
- when :not_applicable
.panel.panel-success.hidden
.panel-body.alert-success
Duis scelerisque id ipsum et consectetur.
- when :low
.panel.panel-success.hidden
.panel-body.alert-success
Duis scelerisque id ipsum et consectetur.
- when :medium
.panel.panel-warning
.panel-body.alert-warning
Duis scelerisque id ipsum et consectetur.
- when :high
.panel.panel-info.hidden
.panel-body.alert-info
Additional information is required:
- if @assessment.form_required?
.panel.panel-success
.panel-heading
.panel-title Description of Work
.panel-body
= f.text_area :aims_hypothesis, label: "Aims/Hypothesis", rows: 4
= f.text_area :methodology, label: "Brief Description of Methodology", rows: 4
= f.text_area :significance, rows: 4
...
= f.form_group do
= f.submit "Save"
、ありますが、
before_action :find_project
before_action :find_assessment
before_action :authorised?
def next_question
@assessment.update_attributes(strong_parameters)
respond_to do |format|
format :html { redirect_to sign_in_path }
format :js do
render partial: "update_assessments"
end
end
end
:なし
new
アクション)ここで
.row
#assessment-form.col-xs-12.col-md-11
= render partial: "form"
はassessments_controller.rbの関連部分ません
そして_update_assessments.js.coffee:
$('#assessment-form').html("<%= escape_javascript (render partial: 'form') %>")
あなたのajaxコールjavascriptを追加してください。 – user100693
AJAX呼び出しを書く方法は問題です。 – Merus