2014-02-20 63 views
0

RoR的新功能,請原諒任何無知。RoR Ajax和jQuery Post Form複選框

運行於4.0.0.rc1,和我使用的設計爲LDAP驗證

我試圖做一個「任務列表」應用程序,並且在與AJAX和jQuery我的索引視圖有點麻煩調用。我試圖有一個foreach循環遍歷任務列表中的元素,每個元素都列爲一個單獨的表單。任務列表將根據當前日期自動提供。我有一個text_field元素來代替自動生成的任務列表用於開發目的。

當用戶點擊複選框時,我想爲表單提供POST SUBMIT,同時重定向回初始索引。在提交之後,還擁有登錄用戶的用戶ID以及隨POST一起提供的日期。即:

[TaskName] [UserID(Blank)] [Date(Blank)] Completed? [複選框]

  • 然後在複選框的用戶點擊:

[TASKNAME] [用戶名] [日期]已完成? [複選框(已禁用)]

我目前有以下代碼,在過去的幾天裏我一直在使用這些代碼,但仍然在努力工作。

應用/視圖/周/ index.html.erb:

<table> 
    <thead>  
    <tr> 
     <th>Task</th> 
     <th>Completed by</th> 
     <th>Completed on</th> 
     <th>Completed</th> 
     <th></th> 
     <th></th> 
     <th></th> 
    </tr> 
    </thead> 

    <tbody> 
    <tr> 
     <%= form_for(Week.new, remote: true) do |f| %> 
     <td><%= f.text_field :task %></td> 
     <td><%= f.hidden_field :completed_by, :value => current_user.login %></td> 
     <td><%= f.hidden_field :completed_on, :value => DateTime.current().in_time_zone('EST').to_formatted_s(:short) %></td> 
     <td><%= f.check_box :completed, :onchange => '$(this.form).submit();' %></td> 
     <% end %> 
    </tr> 
    </tbody> 
</table> 

應用/視圖/資產/ Javascript角/ weeks.js.coffee:

$(document).ready -> 
$("#new_week").on("ajax:success", (e,data,status,xhr) -> 
     $("#new_week").append xhr.responseText 
    ).on "ajax:error", (e, xhr, status, error) -> 
     $("#new_week").append "<p>ERROR</p>" 

應用程序/控制器/ weeks_controller。 rb:

class WeeksController < ApplicationController 
    before_action :set_week, only: [:show, :edit, :update, :destroy] 

    # POST /weeks 
    # POST /weeks.json 
    def create 
    @week = Week.new(week_params) 

    respond_to do |format| 
     if @week.save 
     format.html { redirect_to @week, notice: 'Week was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @week } 
     else 
     format.html { render action: 'new' } 
     format.json { render json: @week.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

回答

0

嗯,我注意到的一件事是,在你的例子#周的行動不處理js請求。

我如何在我的應用程序中完成一個簡單的遠程窗體和js模板。

# POST /weeks 
# POST /weeks.json 
def create 
    @week = Week.new(week_params) 

    respond_to do |format| 
    if @week.save 
     format.js 
    else 
     format.js 
    end 
    end 
end 

和js模板類似於您的week.js.coffee,但以請求的操作和erb模板命名。所以在我的情況下,它會是create.js.erb/new.js.erb。

但我越想越想。你必須先清楚你確實需要什麼。因爲一切都可以在後端或前端處理。有幾種可能性。

+0

抱歉有任何混淆。我真正需要的是自動生成的表單列表,當用戶登錄並單擊某個特定任務的複選框時,該任務將被標記爲已完成,並且該表單將與當前用戶標識以及日期和時間一起提交完成。 這個新的rails,我可能會喜歡最簡單的解決方案,或者我可以從中學到最多的解決方案。 – user1612173