这与previous question有关,但我认为最好将其拆分以便以后进行搜索。
我有一个模特:
class FooModel < ActiveRecord::Base
MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep']
end
我有一个观点:
<% form_for @foo, :url => {:action => 'bar'} do |f|%>
<%= select :range, :thing, FooModel::MONTHS%>
<%= f.submit "Submit" %>
<% end %>
我有一个控制器:
def index
@foo = FooModel.new
respond_to do |format|
format.html # index.html.erb
end
end
def bar
@events = params.inspect
respond_to do |format|
format.html # index.html.erb
end
end
我试图通过下拉菜单以多种不同方式访问应该传递的值,但似乎没有通过。甚至调用params.inspect只会将@events设置为等于空哈希。我怀疑我的流程或被称为错误的方式或我称之为错误的时期。
目前索引是^^生活的视图,当你点击提交它时调用吧。我是否需要以不同的方式传递变量?感谢。
更新 也许这是一个领先优势。我相信我对模型和控件中发生的事情有所了解,但有些事情仍然让我对视图产生了疑问。在&lt;%= select:range,:thing,FooModel :: MONTHS%&gt;范围和事物实际上指的是什么?当我阅读教程和其他在线时尽可能地告诉他们用值填写html id和名称标签,但我不知道其他的。我需要在任何地方初始化它们吗?他们特别指的是什么吗?
答案 0 :(得分:2)
我试过这个。我也试图做常量方法。只有在我将:month
更改为我FooModel
在我完成这项工作后,我想将其从constants.rb
文件移出并将其放入模型中。道格是正确的,并说我们可以通过FooModel::Months
所以我的最终代码在这个实验中看起来像这样;
型号:
class FooModel < ActiveRecord::Base
MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep']
end
查看:
<% form_for @foo, :url => {:action => 'bar'} do |f|%>
<%= f.select :month, options_for_select(FooModel::MONTHS) %>
<%= f.submit "Submit", :disable_with => "Submitting..." %>
<% end %>
控制器:
def index
@foo = FooModel.new
respond_to do |format|
format.html # index.html.erb
end
end
def bar
@events = params.inspect
respond_to do |format|
format.html # index.html.erb
end
end
在某些时候,我可以看到使用constant.rb
来处理月,国家等常见事物,但对于这个有限的实验,我想要两种方式进行测试。如果我使用constants.rb
,我的视图将如下所示。
查看是否使用constants.rb;
<% form_for @foo, :url => {:action => 'bar'} do |f|%>
<%= f.select :month, options_for_select(MONTHS) %>
<%= f.submit "Submit", :disable_with => "Submitting..." %>
<% end %>
@hector:希望这有帮助。
答案 1 :(得分:1)
最好为此使用常量。
lib/initializers
中创建一个名为constants.rb
的文件或任何您想要的文件MONTHS
*请参阅下面的代码在config/initializers/constants.rb
:
MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep']
在您看来:
<% form_for @foo, :url => {:action => 'bar'} do |f|%>
<%= f.select :month, options_for_select(MONTHS) %>
<%= f.submit "Submit", :disable_with => "Submitting..." %>
<% end %>
options_for_select
只是为选择输入格式化。
答案 2 :(得分:-1)
不幸的是,虽然我喜欢Sam的答案,但它确实对我的代码做了一些改进,但最终还不是我的问题的答案。令人沮丧的答案是,在我看来,我有一个调试行,我正在使用它来查看控件运行后我得到的输出,我从错误的变量打印。简单的复制/粘贴监督。