2012-03-30 51 views
1

我有2個模型的事件和任務。Ruby on Rails更新模型,在單個表單中有多個行

事件有很多任務。並且任務是事件 下的嵌套資源,所以我首先創建一個事件並詢問用戶需要在其中創建多少個任務。

假設我創建了一個事件,並且用戶想要在其中創建3個任務。我想這樣做在2個步驟,而不是一個

成功創建了事件的經過,現在我去/事件/ 1 /任務/新

在這裏我想有3個任務名稱字段,當用戶提交後,應該在工作表中創建對事件1

如何做到這一點

所以在這裏3行是_form.html.erb

<%= form_for [@event, @task] do |f| %> 
    <% if @task.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@task.errors.count, "error") %> prohibited this task from being saved:</h2> 

     <ul> 
     <% @task.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :content %><br /> 
    <%= f.text_field :content %> 
    </div> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

任務任務控制器

def new 
    @event=Event.find(params[:event_id]) 
    @event.task_count do 
     @choice = @event.tasks.build 
    end 
    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @task } 
    end 
    end 


    # POST /tasks 
    # POST /tasks.json 
    def create 
    @task = Task.new(params[:task]) 

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

回答

0

我想你是通過涉及任務控制器使這更復雜。控制器指導Web應用程序中的操作。但通過你的描述,你似乎希望在事件創建時自動創建3個任務(如果我正確理解你的話)。除了輸入初始名稱外,這並不涉及用戶。

讓他們提交名稱,當事件控制器創建事件時,它應該在那裏創建任務。

如果您的嵌套資源更復雜,它是嵌套窗體的工作。你可能會受益於這種截屏:

http://railscasts.com/episodes/196-nested-model-form-part-1

0

首先你intilized 3任務aginst這樣

def new 
    @event=Event.find(params[:event_id]) 
    3.times{@event.tasks.build} 

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

然後一個eveent這將是肯定創建3個任務對1 event.or你能幫助從瑞安鐵軌投下嵌套形式也

相關問題