用于更新Rails 4中记录的新表格

梅根·伍德拉夫(Megan Woodruff)

我有一个Rails 4应用程序。在这个应用程序中,我在各种模型之间具有多个HABTM关系。例如,一项任务可以具有许多学习目标以及与之相关的许多任务。现在,我在模式对话框中有一个编辑表单,用于编辑任务记录,并通过更新记录的edit_task_path(@task)进行调用。我想创建一个新表单,该表单也执行该更新操作;但是,我只希望此表单用于更新任务的关联。我的主要问题是:如何创建和调用第二个表单以路由到同一记录的更新操作?我基本上想要一个update_task_path(@task),它也可以处理更新控制器的动作。我研究了各种堆栈溢出,但没有一个专门针对更新控制器操作提出了一种新的形式。

索引

当您要路由到同一位置时,除了将表单的一部分单独放置之外,您实际上不需要执行任何其他操作。我假设任务在您更改关联时必须是有效的,并且关联将是有效的(或者您没有任何东西可以验证关联的对象),否则在失败时它将呈现主要形式您已放入控制器中。

# main_form
<%= form_for @task do |f| %>
  <div class="field">
    <%= f.label :name %>
    <%= f.text_field :name %>
  </div>
<% end %>

# mission_and_learning_objective_form
<%= form_for @task do |f| %>
  <div class="field">
    <%= f.collection_check_boxes :mission_ids, Mission.all, :id, :name %>
  </div>

  <div class="field">
    <%= f.collection_check_boxes :learning_objective_ids, LearningObjective.all, :id, :name %>
  </div>
<% end %>

您可能会为此而考虑使用单独的控制器

路线

resources :task_settings, only: [:edit, :update]

控制器

class TaskSettingsController < ApplicationController
  def edit
    @task = Task.find(params[:id])
  end

  def update
    @task = Task.find(params[:id])
    if @task.update(task_setting_params)
      redirect_to @task, notice: "Settings Updated"
    else
      render :edit
    end
  end

  private

  def task_setting_params
    params.require(:task).permit(mission_ids: [], learning_objective_ids: [])
  end
end

看法

# task_settings/edit
<%= form_for @task, url: task_setting_path(@task) do |f| %>
  <div class="field">
    <%= f.collection_check_boxes :mission_ids, Mission.all, :id, :name %>
  </div>

  <div class="field">
    <%= f.collection_check_boxes :learning_objective_ids, LearningObjective.all, :id, :name %>
  </div>
<% end %>

对我来说,拥有一个单独的控制器会更干净一些,尤其是如果您只想更新关联而想要不同的行为时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

FriendlyID历史记录不适用于Rails中更新的模型URL

来自分类Dev

Rails 4不更新记录

来自分类Dev

用rails更新记录4

来自分类Dev

更新Rails 4中用于设计用户模型的自定义字段

来自分类Dev

无法创建或更新Rails 4中的belongs_to记录

来自分类Dev

Rails创建新记录而不是更新

来自分类Dev

在新表格上更新datagridview中的数据

来自分类Dev

如何在活动记录/ Rails 4迁移中创建具有唯一索引的新表

来自分类Dev

无法在Active Admin面板,Rails 4和Devise中创建新记录

来自分类Dev

Rails 4,将“ \ n”替换为“&#10;” 用于Excel中的XML电子表格

来自分类Dev

Rails 4,将“ \ n”替换为“&#10;” 用于Excel中的XML电子表格

来自分类Dev

在Rails 4中更新模型

来自分类Dev

使用Rails中的按钮更新记录?

来自分类Dev

清除在rails中更新的记录的缓存

来自分类Dev

在Rails 4中构建与新

来自分类Dev

导入CSV并更新记录(如果在rails中存在)4

来自分类Dev

Rails 4:通过has_many关联创建新记录

来自分类Dev

访问Rails 4中的父记录

来自分类Dev

更新EF4中的记录?

来自分类Dev

Rails:时间锁定记录更新

来自分类Dev

更新 rails 中的数组

来自分类Dev

访问表格Vba更新记录

来自分类Dev

Rails 4 ActiveRecord,如果记录存在,请使用id,否则创建一个新记录

来自分类Dev

Rails 4将现有/先前记录值传递到新记录

来自分类Dev

Rails:新关联的 activerecord 更新

来自分类Dev

Rails 4中的Ajax请求更新值

来自分类Dev

嵌套表未在Rails 4中更新

来自分类Dev

Rails 4中的Ajax无法更新内容

来自分类Dev

用于更新 initcap 和 upper 记录的代码