2014-06-12 34 views
0

我正在更改我的Datatables以從我的Rails應用程序加載內容。在其中一個單元格中,我有一大塊HTML,並且自從使用服務器端方法時,單元格用Javascript打印,我需要從Rails傳遞HTML。將HTML從服務器端傳遞到數據表

所以,這裏是它的外觀與數據表的細胞,而不服務器端取的一個:現在

<td> 
      <div class='order-actions-container'> 
      <div class='order-action'> 
      <%= link_to 'Show pages', admin_order_pages_path(order.id), :class => 'btn btn-primary' %> 
      </div> 
      <% if order.status.name == 'reviewed' %> 
      <div class='order-action'> 
       <%= form_tag(admin_order_set_completed_status_path(order), :method => 'patch') do %> 
       <%= submit_tag 'Complete order', class: 'btn btn-success', data: { confirm: 'Are you sure you want to complete this order?' } %> 
       <% end %> 
      </div> 
      <% end %> 

      <% if order.status.name == 'queued' %> 
      <div class='order-action'> 
       <%= form_tag(admin_order_process_order_path(order), :method => 'post') do %> 
       <%= submit_tag 'Process order', class: 'btn btn-success', data: { confirm: 'Are you sure you want to process this order?' } %> 
       <% end %> 
      </div> 
      <% end %> 

      <% if order.status.name != 'processing' %> 
      <div class='order-action'> 
       <%= form_tag(admin_order_path(order), :method => 'delete') do %> 
       <%= submit_tag 'Delete order', class: 'btn btn-danger', data: { confirm: 'Are you sure you want to delete this order?' } %> 
       <% end %> 
      </div> 
      <% end %> 
      </div> 
     </td> 

,因爲所有的數據將來自Rails的回來,我需要傳遞HTML通過JSON。這不是打破了MVC?你如何處理這些情況?

+0

你可以使用link_to helper方法徹底清理你的form_tag&submit_tag代碼。 ex <%= link_to「Complete order」,admin_order_set_completed_status_path(order),:method =>:patch,class:'btn btn-success',data:{confirm:'您確定要完成此訂單嗎? }%>而不是將它包裝在表單標籤中。 Rails將通過這個特定的動作生成一個表單。 – John

回答

0

如果您希望將json與ajax用於數據表,則可以使用JBuilder或rabl創建可輕鬆重用的json文檔。

此外,不需要寫出包裹submit_tags的form_tags來調用不同的方法,使用rails可以使用link_to並指定:方法來完成相同的操作。

<td> 
    <div class='order-actions-container'> 
    <div class='order-action'> 
    <%= link_to 'Show pages', admin_order_pages_path(order), :class => 'btn btn-primary' %> 
    </div> 

    <% if order.status.name == 'reviewed' %> 
    <div class='order-action'> 
     <%= link_to "Complete order", admin_order_set_completed_status_path(order), method: :patch, class: 'btn btn-success', data: { confirm: 'Are you sure you want to complete this order?' }%> 
    </div> 
    <% end %> 

    <% if order.status.name == 'queued' %> 
    <div class='order-action'> 
     <%= link_to "Process order", admin_order_process_order_path(order), method: :post, class: 'btn btn-success', data: { confirm: 'Are you sure you want to process this order?' }%> 
    </div> 
    <% end %> 

    <% if order.status.name != 'processing' %> 
    <div class='order-action'> 
     <%= link_to "Delete order", admin_order_path(order), method: :delete, class: 'btn btn-danger', data: { confirm: 'Are you sure you want to delete this order?' }%> 
    </div> 
    <% end %> 
    </div> 
</td> 
+0

問題是您如何從控制器執行HTML部分?我的意思是,datatables期望JSON來渲染表格,所以如果在其中一個單元格中有HTML,你需要從控制器傳遞它。這不是打破MVC? –

+0

那麼在rails中這就是respond_to塊工作的原因,你可以使用相同的控制器動作,併爲json請求時的初始json提供HTML。你爲什麼覺得它打破了MVC? – John

+0

因爲我正在從控制器創建HTML代碼並將其傳遞給JSON視圖。而我會說在JSON中它應該只是數據。 –

相關問題