当我使用form_tag或form_for
时,我的rails中的ajax调用出现问题我的form_tag看起来像是:
` <%= form_tag(type_name_Tous_path, :method => "get") do %>
<%= text_field_tag :key,params[:key]" %>
<%= text_field_tag :lieu,params[:lieu]" %>
<%= select_tag :nom, options_from_collection_for_select(TypeName.all, :id, :nom, params[:nom]),id:"select_categori"%></span>
<button id="input_btn"><%= submit_tag "Chercher"%></button>
<ul id="sous_select">
<% @tag %>
</ul>
<% end %>`
我的ajax调用如下:
` $(function(){
$(".selectable").selectable({
selected: function(event, ui){
var selected=$("li[class$='ui-selected']").val();
$('#input_btn').click(function(){
alert(selected);
if(selected != null){
$.ajax({
url:'/type_name/Tous',
type:'Get',
data:{my_ta:selected},
success:function(data){
alert(data)
},
error:function(data){
alert("erreur"+data)
}
})
}else{
console.log('pas de selection proposé')
}})}});});`
在我的控制器中,当我进行放置&#34;好的#{params [:my_ta]}&#34;我有两个答案,第一个答案,答案是好的答案&#34; ok ok 9&#34;并且在第二个答案之后就像&#34; ok ok&#34; ,它是因为我调用了两次type_name路由?
答案 0 :(得分:0)
如果您使用form_with
而不是form_tag
,则Rails会自动假设您的表单将使用ajax调用。
所以现在你将在你的控制器中有一个相应的动作,你指明你的路线。 例如,如果您的路线是这样的:
#routes.rb
...
# Bad practice to use capital letters in snake case,
# only_small_letters_will_do
get 'type_name' => 'your_controller#type_name', as: "type_name_tous"
现在,您的操作type_name
将提交表单参数。
我建议您在新的byebug
操作中添加type_name
并进行提交以查看您的参数如何操作:)
值已存在,因此您无需执行
var selected=$("li[class$='ui-selected']").val();