2013-07-16 274 views
0

我有一个应用程序在轨道上的红宝石视图,其中有一些参数显示在屏幕上。如何将参数从视图传递到控制器

<%= link_to l(:label_statistics), 
      {:action => 'stats', :id => @project, :repository_id => @repository.identifier_param}, 
      :class => 'icon icon-stats' if @repository.supports_all_revisions? %> 

我想赶上变量@repository.name和我在我的控制器功能使用它。

我该怎么做?

+2

您已经传递存储库的ID。为什么不直接在你的控制器中查看它? – jdl

+0

,因为控制器是其他没有关于存储库的任何信息。当我尝试直接访问时,我收到零。 – kamusett

回答

0

在您的统计信息操作中,假设您有一个存储库模型,并且包含名称的记录存在于您的数据库中。

@repository = Repository.find(params[:repository_id]) 
@repository.name 

如果没有,你可以连同一切通过它,

<%= link_to l(:label_statistics), 
    {:action => 'stats', 
    :id => @project, 
    :repository_id => @repository.identifier_param, 
    :repository_name => @repository.name}, 
    :class => 'icon icon-stats' if @repository.supports_all_revisions? %> 

然后在控制器中,通过params[:repository_name]

+0

如果我在link_to_l中创建了一个新符号(例如:asdsad => @ repository.name),那么当我执行params [:asdsad]命令时,是否会工作? – kamusett

+0

Rails无法识别的任何参数都会作为查询字符串传递。所以你会得到'yourpath /?asdsad = repositoryname'。你可以通过params [:asdsad]访问它,是的。 –

0

访问它只是使其通过参数。 Doc for li_to

link_to can also produce links with anchors or query strings: 

link_to "Comment wall", profile_path(@profile, :anchor => "wall") # => <a href="/profiles/1#wall">Comment wall</a> 

link_to "Ruby on Rails search", :controller => "searches", :query => "ruby on rails" # => <a href="/searches?query=ruby+on+rails">Ruby on Rails search</a> 

link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux") # => <a href="/searches?foo=bar&amp;baz=quux">Nonsense search</a> 
相关问题