簡體   English   中英

使用UJS將行動態添加到表中

[英]Dynamically adding a row to a table using UJS

我在Rails應用程序中使用UJS遇到麻煩。 我需要將內容動態添加到表中。 問題是,甚至警報功能也無法啟動。 這是一段代碼:_form_index.html.erb

 <%= form_tag create_path, remote: true do %>

              <%= text_field_tag :task_name, nil, { class: "textField", placeholder: "Start typing here to create a task...", style: "height:35px;font-size:20px" } %> 

              <%= hidden_field_tag :status, "uncompleted" %>
              <%= hidden_field_tag :project_name, project.name %>

              <%= submit_tag "Add Task", class: "btn btn-success buttonTask" %> 
 <% end %>
<!--- nested render --->
<table class = "table table-bordered table-hover">
        <%= render partial: "form_tasks", collection: project.tasks, as: :task %>
</table>

_form_tasks.html.erb

<tr class = "taskProp">
    <td class = "checkWidth" > 

        <%= check_box_tag task.id, task.id, false, class: "check" %> 

    </td>

    <td class = "textWidth"> <p class = "form-control-static textRender"> <%= task.name %> </p> </td>

    <td>
      <span>

        <%= link_to "", nil, remote: true, class: "glyphicon glyphicon-sort colorTask" %>

        <%= link_to "", edit_task_path(task), class: "glyphicon glyphicon-pencil colorTask" %>

        <%= link_to "", task, method: :delete, remote: true, class: "glyphicon glyphicon-trash colorTask" %>

      </span> 
    </td>
</tr>

然后,如果我提交form,則從task_controller調用create方法:task_controller.rb

def create

    project_name = params[:project_name]
    project = Project.where( name: project_name ).take!
    @task = project.tasks.create( name: params[:task_name], status: params[:status], project_id: project_name )

    respond_to do |format|
      if @task.save
        format.html { redirect_to projects_path, notice: 'Task was successfully created.' }
        format.js
      else
        format.html { redirect_to projects_path }
      end
    end
  end

最后那是行不通的。我不認為這部分我需要AJAX,因為i-net中的多個示例都在不使用AJAX的情況下使用它,例如http://bernatfarrero.com/jquery-and- rails-3-mini-tutorial / 在任務視圖中創建create.js.erb! (因為我正在做一個待辦事項清單,並有項目-> has_many任務關系)

$(".table-hover").append("<%= escape_javascripts(render(partial: @task)) %>");

因此,主要問題是ujs根本無法工作。

絞盡腦汁后,我發現了一個很好的話題來解決我的問題。 細節是,我在使用JavaScript時遇到了麻煩,有一次我的.js.erb無法渲染,因此這里有一些建議:

  1. 在單擊某個遠程表單或鏈接等之后,閱讀Rails控制台說的內容。檢查是否渲染了正確的文件,如果該文件完全渲染了,則可能存在錯誤(如我的情況)。

  2. 閱讀本主題http://www.alfajango.com/blog/rails-3-remote-links-and-forms/,以了解JavaScript發生了什么。

暫無
暫無

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

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