Rails的构建方法会破坏对象ID?

晶圆厂

我有一个小问题,希望得到一些帮助。

我有一个块和一个位于同一页面上的表单,当该表单位于该块下方时,它可以正常工作:

<% @project.tasks.each do |task| %>
   <%= link_to task.title, project_task_path(@project, task) %>
<% end %>

<%= form_for([@project, @project.tasks.build]) do |f| %>
  <%= f.text_field :title, placeholder: 'Add a Task' %>
  <%= f.submit %>
<% end %>

但是,当我将表单放置在块上方时,出现错误,指出我的任务ID丢失:

No route matches {:action=>"show", :controller=>"tasks", :id=>nil, :project_id=>"14"} missing required keys: [:id]

我最好的猜测是,表单中的构建方法是罪魁祸首。我尝试用.new替换.build,但没有帮助。

这是我的任务控制器中的create动作:

def create
  @project = Project.find(params[:project_id])
  @task = @project.tasks.create(task_params)
  redirect_to @project
end

有谁知道为什么我不能将表格放在块上方?

用户名

修改后的答案。我模拟了这种情况,以检查正在发生的事情,下面是一个有效的示例,我相信它可以实现您想要的目标。

最终结果的图像: 在此处输入图片说明

我认为您遇到的问题更多来自控制器设置。请参阅下面的index操作和create操作中的注释,以了解如何构建任务。

路线:

# config/routes.rb
Rails.application.routes.draw do
  resources :projects do
    resources :tasks
  end
  root 'tasks#index'
end

任务控制器:

# app/controllers/tasks_controller.rb
# un-modified actions left out.
class TasksController < ApplicationController
  before_action :set_task, only: [:show, :edit, :update, :destroy]

  # GET /tasks
  # GET /tasks.json
  def index
    # Create the parent project from the url id
    @project = Project.find(params[:project_id])
    # Create a new task from the params from the form
    @task = @project.tasks.new
    # Get all tasks for your list
    @tasks = @project.tasks.all
  end

  # POST /tasks
  # POST /tasks.json
  def create
    # Create the parent project from the url id
    @project = Project.find(params[:project_id])
    # Create a new task from the params from the form
    @task = @project.tasks.new(task_params)
    # try and save the task.
    respond_to do |format|
      if @task.save
        format.html { redirect_to @project, notice: 'Task was successfully created.' }
      else
        format.html { render :index }
      end
    end
  end
end

任务索引视图:

#app/views/tasks/index.html.erb
p id="notice"><%= notice %></p>

<%= form_for([@project, @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 |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

<h1>Listing Tasks</h1>

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @tasks.each do |task| %>
      <tr>
        <td><%= task.name %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

接口中是否存在不相关的方法会破坏文本/模板?

来自分类Dev

分配(而不是定义)__ getitem__魔术方法会破坏索引编制

来自分类Dev

在Django模型中覆盖clean方法会破坏其他验证吗?

来自分类Dev

比较对象方法会导致3.8中的结果不同

来自分类Dev

Ruby on Rails的构建方法

来自分类Dev

将对象传递给方法会导致对象没有值?

来自分类Dev

将对象传递给方法会导致没有值的对象?

来自分类Dev

构建JavaScript对象的干净方法

来自分类Dev

Rails:构建方法中断循环

来自分类Dev

angularjs ngresource保存带有ID的对象,将破坏URL

来自分类Dev

跳过在Rails中构建相关对象的验证

来自分类Dev

依赖破坏构建

来自分类Dev

为什么不允许子类覆盖方法会导致创建不可变对象?

来自分类Dev

调用@Bean方法会创建对象的新实例还是Bean实例?

来自分类Dev

角度:在对象中使用$ scope方法会导致TypeError:undefined不是函数

来自分类Dev

调用超类型方法会创建一个新的超类型对象吗?

来自分类Dev

将动态对象传递给C#方法会更改返回类型

来自分类Dev

发送给不可变对象的变异方法会关闭应用

来自分类Dev

使用Mockito监视带有对象参数的方法会导致NullPointerException

来自分类Dev

在这种情况下,为什么push方法会在对象上起作用?

来自分类Dev

GetHashCode方法会为不同AppDomain之间的对象返回不同的结果吗?

来自分类Dev

调用超类型方法会创建一个新的超类型对象吗?

来自分类Dev

发送给不可变对象的变异方法会关闭应用程序

来自分类Dev

为什么原型中定义的方法会显示在对象本身中?

来自分类Dev

为什么不同JS对象中的my方法会产生相同的结果?

来自分类Dev

在Rails控制器中调用ruby方法会引发错误

来自分类Dev

为什么Rails html_safe方法会更改我的html结构?

来自分类Dev

在current_user上调用name方法会导致测试错误(ruby on rails)

来自分类Dev

Rails:从has_many关联对象构建对象

Related 相关文章

  1. 1

    接口中是否存在不相关的方法会破坏文本/模板?

  2. 2

    分配(而不是定义)__ getitem__魔术方法会破坏索引编制

  3. 3

    在Django模型中覆盖clean方法会破坏其他验证吗?

  4. 4

    比较对象方法会导致3.8中的结果不同

  5. 5

    Ruby on Rails的构建方法

  6. 6

    将对象传递给方法会导致对象没有值?

  7. 7

    将对象传递给方法会导致没有值的对象?

  8. 8

    构建JavaScript对象的干净方法

  9. 9

    Rails:构建方法中断循环

  10. 10

    angularjs ngresource保存带有ID的对象,将破坏URL

  11. 11

    跳过在Rails中构建相关对象的验证

  12. 12

    依赖破坏构建

  13. 13

    为什么不允许子类覆盖方法会导致创建不可变对象?

  14. 14

    调用@Bean方法会创建对象的新实例还是Bean实例?

  15. 15

    角度:在对象中使用$ scope方法会导致TypeError:undefined不是函数

  16. 16

    调用超类型方法会创建一个新的超类型对象吗?

  17. 17

    将动态对象传递给C#方法会更改返回类型

  18. 18

    发送给不可变对象的变异方法会关闭应用

  19. 19

    使用Mockito监视带有对象参数的方法会导致NullPointerException

  20. 20

    在这种情况下,为什么push方法会在对象上起作用?

  21. 21

    GetHashCode方法会为不同AppDomain之间的对象返回不同的结果吗?

  22. 22

    调用超类型方法会创建一个新的超类型对象吗?

  23. 23

    发送给不可变对象的变异方法会关闭应用程序

  24. 24

    为什么原型中定义的方法会显示在对象本身中?

  25. 25

    为什么不同JS对象中的my方法会产生相同的结果?

  26. 26

    在Rails控制器中调用ruby方法会引发错误

  27. 27

    为什么Rails html_safe方法会更改我的html结构?

  28. 28

    在current_user上调用name方法会导致测试错误(ruby on rails)

  29. 29

    Rails:从has_many关联对象构建对象

热门标签

归档