2013-02-05 55 views
0

在頁面上我列出了任務。我想將該任務的表單作爲更新來完成該任務。我有以下的代碼作爲的form_for:form_for更新方法

<%= form_for :event, :action => :update, :id => event.id do |f| %> 
    <%= f.check_box :complete %> 
    <%= f.submit 'Complete %> 
<% end %> 

有了這個代碼,我想它來編輯在URL中的ID的情況下,完成事件。它所做的是創建一個新事件。有任何想法嗎?

事件控制器:

class EventsController < ApplicationController 
    layout 'events', :except => 'edit' 
    # GET /events 
    # GET /events.json 
    def index 
    @events = Event.order("events.initials ASC, events.priroty ASC") 
    @archived = CompleteEvent.order("complete_events.created_at ASC") 


    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @events } 
    end 
    end 

    # GET /events/1 
    # GET /events/1.json 
    def show 
    @event = Event.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @event } 
    end 
    end 

    # GET /events/new 
    # GET /events/new.json 
    def new 
    @event = Event.new 
    @users = ['BG', 'BD', 'MB', 'AF', 'RA', 'JM'] 
    @name = ['Brad Garrison', 'Brian Davis', 'Matt Broach', 'Alan McFarland', 'Russell Anderson', 'Jason Milam'] 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @event } 
    end 
    end 

    # GET /events/1/edit 
    def edit 
    @event = Event.find(params[:id]) 
    @users = ['BG', 'BD', 'MB', 'AF', 'RA', 'JM'] 
    @name = ['Brad Garrison', 'Brian Davis', 'Matt Broach', 'Alan McFarland', 'Russell Anderson', 'Jason Milam'] 

    end 

    # POST /events 
    # POST /events.json 
    def create 
    @event = Event.new(params[:event]) 

    respond_to do |format| 
     if @event.save 
     user = @event.name 
     Notifier.task_created(user).deliver 
     format.html { redirect_to @event, notice: 'Event was successfully created.' } 
     format.json { render json: @event, status: :created, location: @event } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @event.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /events/1 
    # PUT /events/1.json 
    def update 
    @event = Event.find(params[:id]) 
    @save = @event.update_attributes(params[:event]) 
     @complete = CompleteEvent.new(:initials => @event.initials, :name => @event.name, :event_name => @event.event_name, :complete => @event.complete, :event_description => @event.event_description, :comment => @event.comment) 

    respond_to do |format| 
     if @event.update_attributes(params[:event]) 
     if @event.complete == true 
      user = @event.name 
      @save 
       @complete 
       @complete.save 
       @event.destroy 
      format.html { redirect_to :controller => :events, :action => :index} 
      format.json { head :no_content } 
      elsif @event.complete == false   
      Notifier.task_updated(user).deliver 
      format.html { redirect_to :controller => :events, :action => :index} 
      format.json { head :no_content } 
      end 
     end 
    end 
    end 

    # DELETE /events/1 
    # DELETE /events/1.json 
    def destroy 
    @event = Event.find(params[:id]) 
    @event.destroy 

    respond_to do |format| 
     format.html { redirect_to events_url } 
     format.json { head :no_content } 
    end 
    end 


end 
+0

發佈您的控制器代碼 – Vinay

回答

0

我失蹤的是我的表單處於循環狀態。因此,當我調用form_for @event時,它無法在該循環之外看到。我有函數承擔事件的變量。

<% @events.each do |event| %> 
    ...... 
    ...... 
    <% form_for event do |f| %> 
    ..... 
    <% end %> 
0

在edit.html.erb(或你的部分是在edit.html.erb渲染)使用方法:

<%= form_for @event do |f| %> 

你一般不需要指定這個動作,因爲它是從URI路徑推斷出來的,Rails知道模型對象的id是@ event.id。

+0

當我把<%= form_for @event do | f | %>它會拋出以下錯誤:NilClass:Class的未定義方法'model_name'。有任何想法嗎? –

+0

在edit.html.erb?在編輯操作中,它正在執行@event = Event.find(params [:id])。您確定存在該ID的事件嗎?它是否適用於new.html.erb? – pduey

+0

當我把<%= form_for @event do | f | %>它給我以下錯誤: –