首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RoR查找示例

RoR查找示例
EN

Stack Overflow用户
提问于 2009-09-08 02:20:51
回答 2查看 300关注 0票数 0

我有一个非常简单的问题,但找不到一个很好的解决方案。我有一个用ruby编写的查找代码(例如,居住在某个州的学生):

代码语言:javascript
运行
复制
# State lookup (id, name)
class State < ActiveRecord::Base
    has_many :students
end

# Class that belogs to a state
class Student< ActiveRecord::Base
    belongs_to :state
end

在视图/students/new.html.erb视图中,我将状态显示为下拉列表:

代码语言:javascript
运行
复制
  <p>
    <%= f.label :state %><br />
    <%= f.collection_select :state, State.find(:all), 
       :id, :name, :prompt => "Select a State" %>
  </p>

到目前为止,一切正常,但是当我点击save时,我得到了一个错误:

代码语言:javascript
运行
复制
State(#37872860) expected, got String(#21001240)

这似乎是合理的,因为我向Student.create方法发送了一个字符串,而不是一个State对象。

在RoR中处理此问题的最佳方法是什么?我正在手动获取控制器中的State对象,并在参数散列中替换它,但我认为应该是更好的方法。

非常感谢。费尔南多

EN

Stack Overflow用户

发布于 2009-09-08 09:46:24

State.find(:all)应该真正发生在你的控制器中,而不是你的视图中。我甚至不认为在视图中访问模型是可能的,这可能是您的问题。如果你在你的控制器中做了类似的事情:

@states = State.find(:all)

然后在视图中使用@states变量:

“选择一个状态”%>

我希望这能有所帮助。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1391648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档