【问题标题】:Rails Linking to an alternative view other than showRails 链接到显示以外的其他视图
【发布时间】:2018-07-03 01:29:32
【问题描述】:

这是 Rails 3.2

我有一个访问列表和一个按钮,我想用它来调用具有除 show 以外的其他视图的访问。 haml中的按钮代码为:

  link_to 'Checkout', render('checkout'),  class: 'btn btn-mini btn-danger'

按钮在访问视图中,并且我在访问/视图下有 checkout.html.haml

看起来 render 应该这样做,但它没有

我怎样才能呈现不同于默认显示的不同视图

【问题讨论】:

  • “我想用另一种观点来调用访问......”。请使用技术中涉及的命名法或通俗易懂的语言来解释您想要什么。你在这里问什么没有意义(visit 可能意味着一个 HTTP 请求,但你不 call 它,并且你不向 HTTP 请求传递参数 [例如“替代视图”]) .
  • 我不确定您是否可以直接从link_to 标记render 视图,为什么不在控制器中为该链接设置单独的操作,然后从该操作进行渲染

标签: ruby-on-rails ruby-on-rails-3 routes


【解决方案1】:

render 我认为应该在控制器操作中调用,我认为您不应该在 haml(视图)代码中使用它。

(1) 你的 haml 代码应该有类似
- 点击此链接后,将重定向到访问控制器的checkout 操作。

link_to 'Checkout', checkout_visit_path(visit)

(2) 为了让#1 工作,您应该将它添加到您的routes.rb 文件中

get '/visits/:id/checkout', to: 'visits#checkout', as: 'checkout_visit'  

或者如果你的 routes.rb 中有资源 blabla

resources :visits do
  member do
    get :checkout
  end
end

(3) 在visits_controller.rb 中为checkout 操作编写控制器操作

def checkout
  visit = Visit.find_by_id(params[:id])

  # since we named the controller action as "checkout",  
  # it will look for a file named 'checkout.html' (for html request), or 'checkout.json' (for json request), etc. automatically (and the code block below may not be needed)
  # if for example you want to render another file, do this
  respond_to do |format|
    format.html { render template: 'some/other/file/to/load' }
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多