簡體   English   中英

由ajax局部創建時,表單具有錯誤的動作-Ruby

[英]Form has the wrong action when created by an ajax partial - Ruby

我有一個由ajax部分加載的表單。 當它被交換時,加載在該ajax局部文件上的表單定位到錯誤的控制器/ URL。 我試圖以多種方式來定位正確的控制器,但是它總是被相同,錯誤的控制器/ URL覆蓋。

此外,如果窗體在頁面刷新時加載,則窗體會正確加載-僅當由Ajax加載時,它才針對錯誤的控制器。

這是html加載不正確時的形式:

 <form class="new_prediction" id="new_prediction" action="/predictions" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓"> 

這是html表單的外觀,以及頁面刷新后的外觀:

 <form class="new_predictionend" id="new_predictionend" action="/predictionends" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓"> 
我的問題是,當表單由Ajax加載時,為什么表單會針對不正確的控制器“ /預測”? 局部代碼清楚地表明,表單的對象是新的“ Predictionends”模型,因此應該以“ / predictionends”為目標,就像刷新頁面時所做的一樣。

這是為頁面刷新和ajax加載而加載的部分表單:

 <%= form_for(Predictionend.new, remote:true) do |f| %> <div class="sidebar-open-close-comment-div"> <%= f.text_area :comment, placeholder: "Make a closing comment", class: "close-comment-textarea" %> </div> <div class="sidebar-close-button"> <%= f.submit "SUBMIT", class: "btn" %> </div> <% end %> 

這是加載表單的ajax文件:

 $('.stockpage-sidebar-prediction').first().html("<%= j render partial: 'predictions/prediction_end', locals: {prediction: @prediction} %>"); 

加載ajax的控制器:

 class PredictionsController < ApplicationController def create @prediction = @user.predictions.build(prediction) @prediction.save respond_to do |f| f.js { if invalid_start render 'shared/_error_messages.js.erb' else render "predictions/create.js.erb" end } end end end 

路線:

  post 'predictions' => 'predictions#create' get 'predictions/:id' => 'predictions#show' get 'predictions/hover/:id' => 'predictions#hover' post 'predictionends' => 'predictionends#create' 

任何幫助將不勝感激。

我們在這里有兩個選擇,請在下面找到。

= form_for @model,:url => projections_url,:remote => true做| f |

要么

= form_tag(predictions_url,:method =>“ post”,:id =>“ model_form”,:remote => true)| f |

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM