Ruby on rails 创建具有“属于”关联的对象的正确方法是什么?

Ruby on rails 创建具有“属于”关联的对象的正确方法是什么?,ruby-on-rails,ruby-on-rails-3,has-many,belongs-to,Ruby On Rails,Ruby On Rails 3,Has Many,Belongs To,我对rails还很陌生,我很难理解它的原理,也很难找到“正确”的方法来创建一个对象作为另一个对象的依赖项 我有一个积压工作模型: class Backlog < ActiveRecord::Base has_many :user_stories end class UserStory < ActiveRecord::Base belongs_to :backlog end 在Backlog控制器的show操作中,我想显示一个链接,以创建属于当前Backlog的UserSt

我对rails还很陌生,我很难理解它的原理,也很难找到“正确”的方法来创建一个对象作为另一个对象的依赖项

我有一个
积压工作
模型:

class Backlog < ActiveRecord::Base
  has_many :user_stories
end
class UserStory < ActiveRecord::Base
  belongs_to :backlog
end
Backlog
控制器的show操作中,我想显示一个链接,以创建属于当前
Backlog
UserStory
。我希望它重定向到
UserStory
创建表单

<%= link_to 'New User story', "???" %>

如果我放置
new\u user\u story\u路径
,它将创建一个新的
UserStory
,但不会将其添加到
积压工作

我该怎么办


谢谢

您需要有嵌套的路由

app/config/rotues.rb

CodeGlot::Application.routes.draw do

  resources :backlogs do
    resources :user_stories
  end

end
before_filter :get_backlog

def get_backlog
    if params[:backlog_id]
        @backlog = Backlog.find(params[:backlog_id])
    end
end

def new
end
accepts_nested_attributes_for :user_stories
然后您需要有一个嵌套链接:

index.html.erb#或任何文件

<%= link-to "New user story", new_backlog_user_story_path(backlog) %>
app/views/user\u stories/new.html.erb

<div class="form">
<%= form_for([@backlog, @user_stories]) do |f| %>
  <div class="actions">
    <%= f.submit "Submit",  :disable_with => "Submitting..." %>
  </div>
<% end %>
</div>

您需要有嵌套的路由

app/config/rotues.rb

CodeGlot::Application.routes.draw do

  resources :backlogs do
    resources :user_stories
  end

end
before_filter :get_backlog

def get_backlog
    if params[:backlog_id]
        @backlog = Backlog.find(params[:backlog_id])
    end
end

def new
end
accepts_nested_attributes_for :user_stories
然后您需要有一个嵌套链接:

index.html.erb#或任何文件

<%= link-to "New user story", new_backlog_user_story_path(backlog) %>
app/views/user\u stories/new.html.erb

<div class="form">
<%= form_for([@backlog, @user_stories]) do |f| %>
  <div class="actions">
    <%= f.submit "Submit",  :disable_with => "Submitting..." %>
  </div>
<% end %>
</div>

如果您遇到错误并且不知道如何修复,请告诉我。不需要“接受用户故事的嵌套属性”,因为不涉及嵌套表单。绝对正确。你不需要那个。我基本上是从一个这样做的项目中获取这段代码的,这就是它存在的原因。感谢
blackbird07
如果您遇到错误并且不知道如何修复,请告诉我。不需要“接受用户故事的嵌套属性”,因为不涉及嵌套表单。绝对正确。你不需要那个。我基本上是从一个这样做的项目中获取这段代码的,这就是它存在的原因。谢谢
blackbird07