在一个动作中渲染不同的看法(Rendering different views in one act

2019-08-21 06:31发布

我想有2种观点为同一职位在我的Rails应用程序。 例如 - 在一个地方一个登录的用户可以更新和编辑一职,并在其他任何用户都可以只查看和评论或选择它。

我应该如何去吗? 我需要一个单独的类? 我知道我需要为每个独立的看法,但如何对模型和控制器?

Answer 1:

1.case:你的意见将有类似的内容,但只有在用户签署将有像编辑额外的选项。

您应该使用局部视图,并在你的主视图,你应该写这样的事情:

<% if signed_in? %>
    <%= render 'edit_form' %>
<% end %>

请记住,部分的名称应始终以下划线开始,让你在这种情况下,部分将被称为_edit_form.html.erb_edit_form.html.haml ,这取决于你使用的是什么。

2.case:这取决于如果用户或没有签名,要呈现完全不同的看法,那么你应该处理它在你的控制器:

def show
  if signed_in?
    render 'show_with_edit'
  else
    render 'show_without_edit`
  end
end

和您的文件将被命名为show_with_edit.html.erbshow_without_edit.html.erb

另外,如果您的视图登录的用户被称为show ,那么你可能只是这样做:

def show
  render 'show_without_edit' unless signed_in?
end

3.case:如果你想改变一切基本上取决于用户是否登录或没有,你可以创建一些自定义的方法,并呼吁他们你喜欢这种原始的动作里面:

def show 
  if singed_in? 
    show_signed_in
  else
    show_not_signed_in
  end
end

private

def show_signed_in
   # declaring some instance variables to use in the view..
   render 'some_view'
end

def show_not_signed_in
   # declaring some other instance variables to use in the view..
   render 'some_other_view'
end


文章来源: Rendering different views in one action