Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Rails – 在表单中显示外键引用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_874_1@我正在做一个简单的运动与两个模型.体育和团队,定义为
rails g scaffold sport name:@R_801_8056@r
rails g scaffold team name:@R_801_8056@r fans:@R_801_8056@r sport:references

(注意:我使用脚手架的原因是快速原型设计,@R_984_9447@学习/实验我还不熟悉的部分)

问题是我的“运动”(即外键参)显示如下

所以有奇怪的#< blahl blah>符号表示法

<%= form_for(@team) do |f| %>
  <% if @team.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@team.errors.count,"error") %> prohibited this team from being saved:</h2>

      <ul>
      <% @team.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
     <div class="field">
    <%= f.label :fans %><br />
    <%= f.number_field :fans %>
  </div>
  <div class="field">
    <%= f.label :sport %><br />
    <%= f.text_field :sport %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我尝试将一行更改为@ team.sport.name,但它会导致错误未定义的方法“冰球”#< Team:0x3e7e040> …任何想法如何从这里正确显示名称?

解决方法

您正在使用一个text_field引用一个现有的对象,选择运动作为选项将更适合在这里.

这是必须改变的地方:

<div class="field">
  <%= f.label :sport %><br />
  <%= f.text_field :sport %>
</div>

至:

<div class="field">
  <%= f.label :sport %><br />
  <%= f.SELEct :sport_id,options_for_SELEct(Sport.all.map{|s|[s.name,s.id]}) %>
</div>

f.SELEct将在HTML中生成一个选择框,这些选项将使您DB中的所有运动.

一些关于它的文档:

> http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select
> http://guides.rubyonrails.org/form_helpers.html#select-boxes-for-dealing-with-models

更简单的方法是在您的控制器中设置一个变量@sports,然后在您的视图中调用它:

# in controller
def edit
  @sports = Sport.scoped
  #...

# in edit view
<div class="field">
  <%= f.label :sport %><br />
  <%= f.SELEct :sport_id,options_for_SELEct(@sports.map{ |s| [s.name,s.id] }) %>
</div>

附加信息:如果要“选择”选项的选项,则必须将其作为options_for_SELEct帮助器的第二个参数传递:

options_for_SELEct(@sports.map{ |s| [s.name,s.id] },params[:sport_id])
# this will SELEct by default the option that matches the value of params[:sport_id]

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – Rails – 在表单中显示外键引用全部内容,希望文章能够帮你解决ruby-on-rails – Rails – 在表单中显示外键引用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。