我正在尝试在我的第一个Rails应用程序(Rails 3)中做一些非常简单的事情,我不确定我做错了什么,或者是否有更好的方法.在网上找不到任何东西,或者在这里找不到任何东西,尽管经常搜索.
在应用程序中我有WorkRequests和文章.在查看文章时,我想要一个按钮来创建WorkRequest,并且当出现新的WorkRequest表单时,填写文章.实际上,我正在尝试将Article.id传递给新的WorkRequest.
仅通过添加参数在link_to中工作,但我希望它是一个按钮.虽然它在Article表单的HTML中显示为查询参数,但它永远不会到达WorkRequest.new方法.2010年的这篇文章详细解释了这个问题,但该解决方案对我不起作用(请参阅我在页面末尾的评论.)
这似乎应该是一个相当容易和常见的事情(一旦我弄明白,在我自己的应用程序中还有其他几个地方我想做同样的事情)但我一直在抨击这个特殊的东西墙几天了.我是Rails的新手 - 这是我的第一个应用程序 - 所以我希望有经验的人可以提供帮助!
提前致谢.
我最近发现你可以使用load或require在Rails控制台中运行任意Ruby文件,如下所示:
load 'test_code.rb'
Run Code Online (Sandbox Code Playgroud)
这是很好的,但使用load或require(有什么区别?)我似乎无法访问脚本完成后在脚本中创建的对象.
例如,在我的脚本中,我可能有类似的东西:
u = User.where('last_name = ?', 'Spock').first
Run Code Online (Sandbox Code Playgroud)
如果我启动rails console并使用load或require运行该脚本,我看到它正常工作,我看到查询发生了,我可以在脚本中"放置"对象的属性,并在控制台输出中查看它们.但是一旦脚本完成,变量u就是未定义的.
我想运行一些代码来设置一些对象,然后以交互方式探索它们.可以这样做吗?我做错了什么或遗漏了一些明显的东西?
编辑:已经让这个在32位下工作,我现在正试图让它适用于64位.我已经获得了DLL的源代码,并且DLL和应用程序都被编译为64位.我每次都会遇到访问冲突.这是DLL代码(Visual Studio 2005中的 C++ ):
#pragma pack( push, 2 )
// Output Results Structure
typedef struct tagTVA_RESULTS {
int iID; /* Difference ID 1 .. n */
int iLeft; /* Bounding rectangle */
int iRight;
int iTop;
int iBottom;
double dCx; /* Center of gravity */
double dCy;
double dMajor; /* Shape information */
double dMinor;
double dAngle; /* Rotational information */
int lArea; /* Number of pixels */
int iEdge; /* Set if difference is at the edge …Run Code Online (Sandbox Code Playgroud) 编写我的第一个非常简单的Rails应用程序,一个简单的管理应用程序来跟踪我们某个部门的工作.为人们生成的索引页面上有一个link_to来添加新人.我试图将其更改为button_to并且无法说路径/ people/new不存在,但显然它确实是因为link_to转到同一个地方.
我正在使用Rails 3/Ruby 1.9.2.我在/app/views/people/index.html.erb页面上有这个代码:
<%= link_to 'New Person', new_person_path %>
<%= button_to "New", :controller => "people", :action => "new" %>
Run Code Online (Sandbox Code Playgroud)
link_to有效.button_to失败了:
路由错误没有路由匹配"/ people/new"
也试过了
<%= button_to 'New Person', new_person_path %>
Run Code Online (Sandbox Code Playgroud)
同样的错误.奇.
我正在开发一个应用程序,它将有一个父类,它将有许多基本的字段和方法,以及几个带有附加字段方法的子类.
好奇如何在数据库中实现最佳.为父类创建一个表,为子类创建一个单独的表并通过id字段链接它们是否有意义,或者为了便于访问和更简单的查询,是否更好地复制子类表中的父类字段?
在我的Rails 3.2.8应用程序中,我有一些命名范围,我想在某些情况下链接在一起.
所以,例如,我有这两个范围:
scope :by_status, lambda { |status| if status == "All" then WorkRequest.all else WorkRequest.find_all_by_status(status) end }
scope :in_date_range, lambda { |start_date, end_date| includes([:person, :pier_module]).where("(status_date >= ?) AND (status_date <= ?)", start_date, end_date) }
Run Code Online (Sandbox Code Playgroud)
我单独使用它们,但我也希望能够像这样一起调用它们:
WorkRequest.by_status("Accepted").in_date_range("2012-01-01", "2012-10-02")
Run Code Online (Sandbox Code Playgroud)
当我尝试它时,它抱怨in_date_range不是Array的方法.
但我有另一个范围,
scope :active, includes([:person, :pier_module]).where("status = 'New Request'")
Run Code Online (Sandbox Code Playgroud)
如果我这样做
WorkRequest.active.in_date_range("2012-01-01", "2012-10-02")
Run Code Online (Sandbox Code Playgroud)
有用!显然,活动范围返回一个Relation,而lambda范围返回Arrays,因此无法链接.
我想知道为什么简单的范围和lambda范围之间的区别,参数如何影响它,以及我是否可以做任何事情,而不是编写组合范围,我已经完成了.
scope :by_status_in_date_range, lambda { |status, start_date, end_date| includes([:person, :pier_module]).where("(status = ?) AND (status_date >= ?) AND (status_date <= ?)", status, start_date, end_date) }
Run Code Online (Sandbox Code Playgroud)
工作,但不是很干(因为我也需要个别范围)或Rails-ish.在这里和其他地方搜索我已经看到类似的问题,但似乎没有适用于这种情况,我试图用参数链接两个lambda.