小编Dan*_*ron的帖子

RAILS3:通过button_to传递任意参数?

我正在尝试在我的第一个Rails应用程序(Rails 3)中做一些非常简单的事情,我不确定我做错了什么,或者是否有更好的方法.在网上找不到任何东西,或者在这里找不到任何东西,尽管经常搜索.

在应用程序中我有WorkRequests和文章.在查看文章时,我想要一个按钮来创建WorkRequest,并且当出现新的WorkRequest表单时,填写文章.实际上,我正在尝试将Article.id传递给新的WorkRequest.

仅通过添加参数在link_to中工作,但我希望它是一个按钮.虽然它在Article表单的HTML中显示为查询参数,但它永远不会到达WorkRequest.new方法.2010年的这篇文章详细解释了这个问题,但该解决方案对我不起作用(请参阅我在页面末尾的评论.)

这似乎应该是一个相当容易和常见的事情(一旦我弄明白,在我自己的应用程序中还有其他几个地方我想做同样的事情)但我一直在抨击这个特殊的东西墙几天了.我是Rails的新手 - 这是我的第一个应用程序 - 所以我希望有经验的人可以提供帮助!

提前致谢.

parameters ruby-on-rails

16
推荐指数
2
解决办法
2万
查看次数

在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就是未定义的.

我想运行一些代码来设置一些对象,然后以交互方式探索它们.可以这样做吗?我做错了什么或遗漏了一些明显的东西?

ruby-on-rails rails-console ruby-on-rails-4

11
推荐指数
1
解决办法
4471
查看次数

将Visual Basic 6.0类型转换为VB.NET"结构"

编辑:已经让这个在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)

vb.net vb6-migration

9
推荐指数
1
解决办法
9570
查看次数

Rails button_to失败,路径不存在于存在的路径

编写我的第一个非常简单的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)

同样的错误.奇.

routes ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
4530
查看次数

在数据库中实现子类化

我正在开发一个应用程序,它将有一个父类,它将有许多基本的字段和方法,以及几个带有附加字段方法的子类.

好奇如何在数据库中实现最佳.为父类创建一个表,为子类创建一个单独的表并通过id字段链接它们是否有意义,或者为了便于访问和更简单的查询,是否更好地复制子类表中的父类字段?

oop database-design

3
推荐指数
2
解决办法
1797
查看次数

Rails 3.2:链接lambda范围?

在我的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.

ruby-on-rails named-scopes

0
推荐指数
1
解决办法
3060
查看次数