2012-03-30 53 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你能帮助从瑞安铁轨投下嵌套形式也

相关问题