所述“创建新条目"指的是“创建新条目".多对多关系页面 [英] The "create new entry" page on a many-to-many-relationship

查看:99
本文介绍了所述“创建新条目"指的是“创建新条目".多对多关系页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Rails的新用户.这可能是一个非常基本的问题,但我需要帮助

I am a new rails user. This is probably a very basic question, but I need help

我正在制作一个具有多对多关系的Bands表,Festivals表和Participations表的应用程序.我的模型如下:

I am making an app that has a Bands table, a Festivals table, and a Participations table in a many-to many relationship. My models are as follows:

class Band < ActiveRecord::Base
  attr_accessible :year, :genere, :name, :country
  has_many :participations
  has_many :festivals, :though => :participations
end

class Festival < ActiveRecord::Base
  attr_accessible :city, :name, :country
  has_many :participations
  has_many :bands, :through => :participations
end

class Participation < ActiveRecord::Base
  attr_accessible :year
  belongs_to :band
  belongs_to :festival
end

当我使用rails server执行我的应用程序时,我可以正常访问localhost:3000/bands和/festivals,并且新的band页面可以完美运行.当我访问localhost:3000/participation时,它会正常加载(并显示一个包含ID和年份的空表),但是单击新的参与项会显示以下错误:

When I excecute my app with rails server I can access localhost:3000/bands and /festivals normally, and the new band page works perfectly. When I access localhost:3000/participations it loads normally (and shows an empty table with both ids and the year) but clicking on new participation shows me the following error:

undefined method `bands_id' for #<Participation:0xba1a5760>

Extracted source (around line #16):

13: 
14:   <div class="field">
15:     <%= f.label :bands_id %><br />
16:     <%= f.number_field :bands_id %>
17:   </div>
18:   <div class="field">
19:     <%= f.label :festivals_id %><br />

Trace of template inclusion: app/views/participations/new.html.erb

Rails.root: /home/User/apps/festnum

我是Rails的新用户,不确定如何更改参与表的视图控制器. 谢谢!

I am a new rails user and am unsure how to change the view controller of the participations table. Thanks!

PD:我还想知道如何在参与创建页面中添加一个下拉菜单,其中包含已经创建的音乐节和乐队.

PD: I would also like to know how to add a drop down menu in the participations creation page with the festivals and bands that have already been created.

以前的问题已解决.但是,我仍在寻找一种方法,可以在参与创建页面上创建一个下拉菜单,其中包含已经创建的节日和乐队,如果可以的话,可以使用节日名称而不是ID.另一个问题:访问创建新的参与"页面时,我在字段中填写了我已经创建的节日和乐队的数据(两个字段的ID为1,我在数据库中使用了SELECT语句,并确保这些条目已经存在),并且出现以下错误:

The previous issue has been resolved. However, I am still looking for a way to make a drop down menu in the participations creation page with the festivals and bands that have already been created, and if it could be with the festival name and not the id even better. Another issue: When I access the create new participation page, I fill in the fields with data of a festival and a band that I already created (ID 1 for both fields, I used a SELECT statement in my database and made sure those entries already exist) and I get the following error:

没有ID找不到节日.

Couldn't find festival without an ID.

我很确定错误在这里:(在参与者控制器处)

Im pretty sure the error is here: (At the participations controller)

def create
@participation = Band.new(params[:band])
@participation.festivals << Festival.find(params[:festival_id])

respond_to do |format|
  if @participation.save
    format.html { redirect_to @participation, notice: 'Participation was $
    format.json { render json: @participation, status: :created, location:$
  else
    format.html { render action: "new" }
    format.json { render json: @participation.errors, status: :unprocessab$
  end
end

结束

能再帮我一次吗?

推荐答案

字段名称必须为单数:

14:   <div class="field">
15:     <%= f.label :band_id %><br />
16:     <%= f.number_field :band_id %>
17:   </div>

(您有<%= f.number_field :bands_id %>)

这篇关于所述“创建新条目"指的是“创建新条目".多对多关系页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆