Rails Bootstrap模式试图更新错误的模型

时间:2013-07-30 15:24:32

标签: ruby-on-rails twitter-bootstrap

我的Rails应用程序有任务和任务has_many任务(更新或评论)。 在显示列出任务的页面时,我想要一个Bootstrap模式列表现有的Taskups并允许添加一个新的Taskup。

这是启动模式的任务列表中的代码:

<a data-toggle="modal" href="#task-<%= task.id %>" class="btn btn-primary btn-mini" type="button">Comments</a>
<%= render :partial => "taskups/comments", locals: {task: task} %>

模式弹出窗口,您可以看到该任务的任务列表。还有一个新任务的输入字段。

这是模态代码:

<div id="task-<%= task.id %>" class="modal" style="display: none;">
<%= simple_form_for :taskup, :url => {:action => :create} do |f| %>
  <div class="modal-header">
    <a class="close" data-dismiss="modal">&#215;</a>
    <h3>Comments</h3>
  </div>

  <div>
  <% task.taskups.each do |taskup| %>
      *
      <%= taskup.comments %>
      </br>
  <% end %>
  </div>

  <div class="modal-body">
    <%= f.input :comments, :label => 'New Comment:'  %>
    <%= f.hidden_field :task_id, :value => task.id %>
    <%= f.hidden_field :user_id, :value => current_user.id %>
  </div>
  <div class="modal-footer">
    <%= f.submit "Save Comment", :class => "btn-primary" %>
    <a class="btn" data-dismiss="modal" href="#">Close</a>
  </div>
<% end %>
</div>

但是,如果您在输入框中输入一些文本并单击“保存评论”按钮,则您看到的下一个屏幕是任务输入表单。

这就像代码正在尝试添加新的Task而不是新的Taskup。

感谢您的帮助!

UPDATE1

这是Taskups的控制器代码。 (但是,我认为任务控制器会以某种方式被调用)

# POST /taskups
# POST /taskups.json
def create
  @taskup = Taskup.new(params[:taskup])

  respond_to do |format|
    if @taskup.save
      if @taskup.taskstatus_id != nil
        Task.find(@taskup.task_id).update_attributes(:taskstatus_id => @taskup.taskstatus_id)
      end
      format.html { redirect_to @taskup, notice: 'Task Update was successfully created.' }
      format.json { render json: @taskup, status: :created, location: @taskup }
    else
      format.html { render action: "new" }
      format.json { render json: @taskup.errors, status: :unprocessable_entity }
    end
  end
end

这是Taskups模型:

class Taskup < ActiveRecord::Base

  belongs_to :taskstatus
  belongs_to :task
  belongs_to :user

  default_scope { where(tenant_id: Tenant.current_id) }

  default_scope :order => 'taskup_date ASC'
end

1 个答案:

答案 0 :(得分:1)

这有效:

<%= simple_form_for :taskup, :url => url_for(:action => 'create', :controller => 'taskups'), :method => 'post' do |f| %>