我是新的rails用户。这可能是一个非常基本的问题,但我需要帮助
我正在创建一个具有Bands表,节日表和多对多关系的Participations表的应用程序。我的模型如下:
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 / band和/ festivals,并且新的乐队页面可以正常运行。当我访问localhost:3000 /参与时,它正常加载(并显示一个包含ID和年份的空表)但点击新参与会显示以下错误:
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用户,我不确定如何更改参与表的视图控制器。 谢谢!
PD:我还想知道如何在参与创建页面中添加一个下拉菜单,其中包含已经创建的节日和乐队。
编辑:上一期已经解决。但是,我仍然在寻找一种方法,在参与创建页面中创建一个下拉菜单,其中包含已经创建的节日和乐队,如果它可以与节日名称而不是id更好。另一个问题:当我访问创建新参与页面时,我填写了节日数据和我已经创建的乐队的字段(两个字段的ID 1,我在我的数据库中使用了SELECT语句并确保了这些条目存在)我得到以下错误:
没有身份证无法找到节日。
我很确定错误在这里:(在参与控制器处)
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
端
你能帮我一次吗?
答案 0 :(得分:0)
该字段的名称必须是单数:
14: <div class="field">
15: <%= f.label :band_id %><br />
16: <%= f.number_field :band_id %>
17: </div>
(你有<%= f.number_field :bands_id %>
)