0

经验丰富的 Java 开发人员,Rails 新手 - 想知道脚手架中的 belongs_to 关系。

看到另一个这样的答案

rails scaffold 命令是否支持生成belongs_to 或多对多模型中间表迁移信息?

并遵循rails generate scaffold_controller obj:references模式。

显示索引/显示页面#<MyClass:xxxx>而不是我想要的字符串 - 目标类(的父端belongs_to)中是否有一个方法我需要覆盖以指定标识符?

同样在编辑视图中,它似乎正在尝试将引用修改为字符串而不是下拉列表 - 我需要指定什么来实现这一点吗?

谢谢!

顺便说一句 - 我能够在 Django 和 Grails 中获得类似的脚手架,其中外键变成了下拉列表;我希望 Rails 也同样简单,我只是想念它。

4

1 回答 1

1

您可以覆盖#to_s实例上的方法,因为它是被调用的方法。

class FooDoodle < ActiveRecord::Base
  def to_s
    name
  end
end

那是显示记录的时候。

但是,当您实际使用表单设置关联时,scaffold 只会在视图中生成一个输入字段,以便您输入 id。例如,您可以有一个下拉菜单,但必须以某种方式选择该下拉菜单的选项。

例如,如果有 2000 条可能的关联记录,您会显示哪些?你显示2000吗?只有前10个?该逻辑将进入您的控制器。

因此,例如:

class FooDoodlesController < ApplicationController
  def edit
    @foodoodle = FooDoodle.find(params[:id])

    @friends = @foodoodle.possible_friends # or else
  end
end

并使用selectandoptions_for_select作为选择

# _form.html.erb

<%= form_for @foodoodle do |f| %>
  <%= f.label :friend %>
  <%= f.select :friend, @friends.map{ |p| [p.to_s, p.id] } %>
于 2013-03-08T20:26:49.070 回答