私の見解では、次のコードがあります。
<%= form_for :folder_name, :remote => true, :method => "get", :url => {:action
=> "show_workflow_list"} do |f| %>
<%= f.select :foldernames, options_for_select(@folders, @folders.first), {}, {:onchange => ("this.form.submit()")}%><br /><br />
<%= hidden_field_tag 'selected_domain', params[:domain_selected] %>
ドロップダウンの値を変更すると、フォームは次のように送信されます。
Processing by DeploymentGroupController#show_workflow_list as HTML
Parameters: {"utf8"=>"Γ£ô", "folder_name"=>{"foldernames"=>"DETAIL_ADJUSTMENT"
以下のようなものの代わりに送信ボタンを追加すると:onchange=>
:
<%= form_for :folder_name, :remote => true, :method => "get", :url => {:action => "show_workflow_list"} do |f| %>
<%= f.select :foldernames, options_for_select(@folders, @folders.first)%><br /><br />
<%= hidden_field_tag 'selected_domain', params[:domain_selected] %>
<pre><%= f.submit "Submit"%></pre>
リクエストは次のように送信されます。
Processing by DeploymentGroupController#show_workflow_list as JS
Parameters: {"utf8"=>"Γ£ô", "folder_name"=>{"foldernames"=>"DETAIL_ADJUSTMENT"
show_workflow_list
アクションに次のコードがあります。
def show_workflow_list
//some code
respond_to do |format|
format.js
end
end
次の内容のshow_workflow_list.js.erb
ファイルがあります。
$('#workflow_selection').html("<%=j render "show_workflow_list" %>");
問題は、に変更するとonchange=> submit
、アクションがHTMLとして処理されることです。
Processing by DeploymentGroupController#show_workflow_list as HTML
送信ボタンがある場合はJSとしてではありません。
Processing by DeploymentGroupController#show_workflow_list as JS
そのため、406ステータスエラーが返され、show_workflow_list
がレンダリングされません。
アップデート:
なぜonchange=>
HTMLとして送信されているのか理解しました。その理由は、selectの形式が「select(object, method, choices, options = {}, html_options = {})
」であるためです。私が言及している場所":onchange=>this.for.submit" is under html_options={}"
は、それがHTMLとして提出されている理由です。_show_workflow_list.html.erb
同じページのとの間の部分をレンダリングする必要があるため<div>
、コントローラーのコードを次のように変更しました。
def show_workflow_list
//code here
respond_to do |format|
format.html{?}
end
end
上記のコードでは、のタグ間の部分をレンダリングするように{}
、何かを入力する必要があります。format.html
_show_workflow_list
div
make_deployment_group.html.erb