2014-10-30 31 views
0

我目前正在做一個簡單的應用程序,我試圖在創建新任務時實現ajax。我想呈現的部分將包含新任務的信息,然後將其追加到已經存在的表,但我不斷收到以下錯誤:無法在我的rails項目中使用Ajax顯示動態內容

POST http://localhost:3000/projects/4/tasks 500 (Internal Server Error) 

這是我的任務創建表單

# app/view/tasks/_create_task.html.erb 
    <div class="row"> 
     <div class="col-md-5"> 
     <%=form_for [@project, @task], remote: true do |f| %> 
      <div class="form-group"> 
      <%=f.label :task_name %> 
      <%=f.text_field :task_name, class: "form-control"%> 
      </div> 
      <div class="form-group"> 
      <%=f.label :deadline %> 
      <%=date_select :task, :deadline, class: "form-control" %> 
      </div> 
      <%=f.submit "Create task", class: 'btn btn-info' %> 
     <%end%> 
     </div> 
    </div> 

這裏是我的任務控制器代碼創建行動

#app/controllers/tasks_controller.rb 
    before_action :set_project 

    def create 
    @task = @project.tasks.build(set_params).save 

    respond_to do |format| 

     format.html do 
     if @task.valid? 
      flash[:notice] = "Your task has been successfully saved" 
      redirect_to project_path(@project) 
     else 
      render 'projects/show' 
     end 
     end 

     format.js 
    end 
    end 
    private 
    def set_params 
    params.require(:task).permit! 
    end 

    def set_project 
    @project = Project.find(params[:project_id]) 
    end 

和相應的create.js.erb模板

#app/view/tasks/create.js.erb 
$('#task-table').append("<%= j render 'task', task: @task, project: @project%>"); 

最後部分,我想呈現:

#app/views/tasks/_task 

<% if task.erased %> 
    <% row_class = 'hidden'%> 
<% end %> 

<% if task.erased == nil && task.checked %> 
    <% row_class = 'row-disabled success' %> 
    <% icon_class = 'glyphicon glyphicon-ok check-icon' %> 
<%elsif task.erased == nil && task.checked == nil %> 
    <% row_class = '' %> 
    <% icon_class = 'glyphicon glyphicon-unchecked check-icon ' %> 
<% end %> 

<tr class = "<%= row_class %>" id = 'task-row' > 
    <td> 
    <%= link_to project_check_task_path(project, task, checked: true), method: 'patch' do %> 
     <span class= "<%=icon_class %>"></span> 
    <% end %> 
    </td> 
    <td><%= task.task_name %></td> 
    <td><%= task.created_at.strftime("%b %d, %Y")%></td> 
    <td><%= task.deadline.strftime("%b %d, %Y")%></td> 
    <td> 
    <%= link_to project_erase_task_path(project, task, erase: true), method: 'patch' do %> 
     <span class = "glyphicon glyphicon-trash"></span> 
    <% end %> 
    </td> 
</tr> 

注:不用翻譯的部分I'have嘗試任何動態內容追加如@ task.title等,以及所有投擲同樣的錯誤。

感謝您的幫助。

+0

我注意到第一個問題是,你需要允許任務屬性太(TASK_NAME,...) – mohameddiaa27 2014-10-30 17:01:23

+0

你有沒有看應用程序會記錄以查看是否有其他信息? – Mir 2014-10-30 17:01:54

+0

提供此錯誤的完整日誌。 – 2014-10-30 17:07:35

回答

1

你有可能會從以下行的問題:

@task = @project.tasks.build(set_params).save 

因爲@project.tasks.build(set_params).save返回或者truefalse,而你是把它當作你的任務目標。

它應該是:

@task = @project.tasks.build(set_params) 
@task.save 

@task = @project.tasks.create(set_params) 
+0

這是問題所在。謝謝! – 2014-10-30 17:18:42