首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将project_id设置为嵌套路由中的数据库

无法将project_id设置为嵌套路由中的数据库
EN

Stack Overflow用户
提问于 2020-02-04 12:12:48
回答 1查看 35关注 0票数 0

我已经创建了一个与职责一对多关联的项目脚手架。我可以呈现责任表单,但我不能将project_id设置为责任表。我已经创建了一对多关联。

这是我的代码-

routes.rb

代码语言:javascript
复制
  resources :projects do
    resources :responsibilities
  end

责任form.html.erb

代码语言:javascript
复制
<%= form_with(model: responsibility, url: [@project, responsibility], local: true) do |form| %>
  <% if responsibility.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(responsibility.errors.count, "error") %> prohibited this responsibility from being saved:</h2>

      <ul>
      <% responsibility.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :responsibility_matrix %>
    <%= form.text_field :responsibility_matrix %>
  </div>

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

responsibilities_controller.rb

代码语言:javascript
复制
  def new
    @project = Project.find(params[:project_id])
    @responsibility = Responsibility.new
  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-04 13:07:48

循序渐进

新应用

代码语言:javascript
复制
rails new bookstore

添加脚手架作者

代码语言:javascript
复制
rails g scaffold author name

添加脚手架书籍

代码语言:javascript
复制
rails g scaffold book name author:references

更新路由

从…

代码语言:javascript
复制
resources :books
resources :authors

代码语言:javascript
复制
resources :authors  do
    resources :books
end

让我们在app/views/authors/show.html.erb中显示新书链接,添加

代码语言:javascript
复制
<%= link_to 'New book', new_author_book_path(@author) %> |

在创建了第一个作者并访问了http://localhost:3000/authors/1/books/new之后,我们有了一个错误: Books#new中的NoMethodError

代码语言:javascript
复制
undefined method `books_path'

要进行修复,请首先在BooksController中添加

代码语言:javascript
复制
before_action :set_author, only: [:new]

private
def set_author
  @author = Author.find(params[:author_id])
end

在app/views/book/_form.html.erb中

代码语言:javascript
复制
<%= form_with(model: book, url:[@author, book], local: true) do |form| %>

再次访问http://localhost:3000/authors/1/books/new

Books#new中的NameError

代码语言:javascript
复制
undefined local variable or method `books_path'

修复app/views/book/new.html.erb

变化

代码语言:javascript
复制
<%= link_to 'Back', books_path %>

代码语言:javascript
复制
<%= link_to 'Back', author_books_path(@author) %>

现在我们可以呈现http://localhost:3000/authors/1/books/new

我想你在这里得到了你需要的一切

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60050471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档