【问题标题】:RoR Controller accessed from two different link_to buttons从两个不同的 link_to 按钮访问的 RoR 控制器
【发布时间】:2016-02-11 06:09:34
【问题描述】:

我有一个控制器,它的新操作正在从两个不同的导航栏链接访问。原因是两个不同的功能需要同一个控制器。 如何传递一些参数以使 Controller 知道从哪个 link_to 访问它? (这样我可以稍微修改一下new.html.erb文件)

【问题讨论】:

    标签: ruby-on-rails-4 model-view-controller link-to


    【解决方案1】:

    由于控制器的new 动作正在呈现,这意味着您必须呈现一个表单。在这种形式中,您可以像这样传递一个隐藏字段:

    <%= f.hidden_field :value_name, :value => "true" %>
    

    现在在控制器的create 操作中,您可以在保存之前进行检查,如下所示:

    def create
     if params[:model_name][:value_name] == true
       # then it must have come from first nav link,hence save that
    else  
      # the value has come from the other nav.
    end
    end
    

    当您单击第二个导航链接时,您还必须设置值 false,如下所示:

    <%= link_to "ABC", resource_path(:value_name => "false") %>
    

    希望对您有所帮助。

    【讨论】:

    • 谢谢。但是表单的呈现应该会有所不同,具体取决于单击哪个链接来创建它。我需要从链接本身传递某种参数。作为最后的手段,我可​​能必须向资源中添加一列,然后通过两个链接为新列传递不同的值。但是有没有办法避免添加无用的属性?
    • 我不这么认为,如果这是用例,一个简单的布尔列可以让您免于修改其余代码。
    • 再次感谢。这样做。
    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多