在rails中发送Ajax调用和form_tag

时间:2017-07-04 09:12:13

标签: ruby-on-rails ruby ajax

当我使用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路由?

1 个答案:

答案 0 :(得分:0)

Rails可以为您提供帮助!

如果您使用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();

NDesk.Options