Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails中的ajax表单提交消息错误_Ruby On Rails_Ajax - Fatal编程技术网

Ruby on rails rails中的ajax表单提交消息错误

Ruby on rails rails中的ajax表单提交消息错误,ruby-on-rails,ajax,Ruby On Rails,Ajax,项目有一个项目总监,项目总监有属性状态 早些时候,我没有使用ajax提交项目。\u每次都会重新加载director表单页面,并相应地访问提交状态。 现在,我使用ajax提交数据时不需要重新加载页面,但在状态值设置一次后,我无法隐藏,也无法显示提交时的任何消息。如何使用ajax特性在行中显示提交的值并在提交后隐藏表单 这是我目前的代码:- index.html.erb <% if project_site.project_directors.empty?%> <%= form

项目
有一个
项目总监
,项目总监有属性
状态

早些时候,我没有使用ajax提交项目。\u每次都会重新加载director表单页面,并相应地访问提交状态。

现在,我使用ajax提交数据时不需要重新加载页面,但在状态值设置一次后,我无法隐藏,也无法显示提交时的任何消息。如何使用ajax特性在行中显示提交的值并在提交后隐藏表单

这是我目前的代码:-

index.html.erb

<% if project_site.project_directors.empty?%>
  <%= form_for ProjectDirector.new, :remote => true do |f| %>
    <td>
     <table class="approval-table">
      <tr>
       <td>
        <ul>
         <div>
          <div class="wrapper-class">
           <%= f.radio_button :status, true  %>
           <%= f.label :approve %>
           <br>
           <%= f.radio_button :status, false  %>
           <%= f.label :reject %>
          </div>
          <%=f.hidden_field :project_site_id, value: project_site.id%>
         </div>
        </ul>
       </td>
       <td>
        <%= f.hidden_field :user_id, value: current_user.id %>
        <%= f.submit 'Submit', :class => 'button primary small' %>
       </td>
      </tr>
     </table>
    </td>
  <% end %>
<% else %>
  <% project_site.project_directors.each do |project_director| %>
    <% if project_director.status == false %>
      <td class="rejected fi-x"><%= ' Rejected' %></td>
    <% elsif project_director.status == true %>
      <td class="approved fi-check"><%= " Approved" %></td>
    <% end %>
  <% end %>
<% end %>

在保存请求中调用success方法时,需要更新DOM。您可以通过创建一个
create.js.erb
文件来执行一些js

  • 您可以将控制器更改为使用
    响应
  • 将HTML拆分为部分

  • 您能检查网络选项卡以查看此请求是否正确通过吗?我没有更改您的代码。检查网络,现在提交表单时没有任何变化
    def create
      @project_director =  ProjectDirector.new(remark_params)
      #redirect_to  directors_index_path, anchor: '#panel2'
      if @project_director.save
        if request.xhr?
          render json: { success: true }
        else
          redirect_to notice: "Thing was successfully created."
        end
      else
        render :new
      end
    end
    
    def create
      @project_director = ProjectDirector.new(remark_params)
    
      respond_to do |format|
        if @project_director.save
          format.js   { render layout: false }
          format.html { redirect_to notice: "Thing was successfully created." }
        else
          format.js   { render layout: false }
          format.html { render :new }
        end
      end
    end
    
    <div id="project_site_view">
      <% if project_site.project_directors.empty?%>
         <%= render 'from' %>
      <% else %>
        <%= render 'project_directors', locals: { project_site: project_site } %>
      <% end %>
    </div>
    
    # _form.html.erb
    <%= form_for ProjectDirector.new, :remote => true do |f| %>
      <td>
       <table class="approval-table">
        <tr>
         <td>
          <ul>
           <div>
            <div class="wrapper-class">
             <%= f.radio_button :status, true  %>
             <%= f.label :approve %>
             <br>
             <%= f.radio_button :status, false  %>
             <%= f.label :reject %>
            </div>
            <%=f.hidden_field :project_site_id, value: project_site.id%>
           </div>
          </ul>
         </td>
         <td>
          <%= f.hidden_field :user_id, value: current_user.id %>
          <%= f.submit 'Submit', :class => 'button primary small' %>
         </td>
        </tr>
       </table>
      </td>
    <% end %>
    
    # _project_directors.html.erb
    <% project_site.project_directors.each do |project_director| %>
      <% if project_director.status == false %>
        <td class="rejected fi-x"><%= ' Rejected' %></td>
      <% elsif project_director.status == true %>
        <td class="approved fi-check"><%= " Approved" %></td>
      <% end %>
    <% end %>
    
    <% if @project_director.errors.any? %>
      <!-- handle error here -->
    <% else %>
      $("#project_site_view").html("<%= escape_javascript(render partial: 'project_directors', locals: { project_site: @project_director.project_site } ) %>"); 
    <% end %>