首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于在ruby on rails中使用渲染

关于在ruby on rails中使用渲染
EN

Stack Overflow用户
提问于 2013-07-17 15:58:00
回答 1查看 103关注 0票数 0

我是rails的新手,还在研究基础知识,所以非常感谢任何提示和建议!

我已经在一个网站上制作了一个功能性联系人页面,我希望能够在不同的页面上呈现选项卡内的表单和功能。我在views文件夹的static_pages文件夹中有以下代码:

代码语言:javascript
复制
<div id="tabs">
 <ul>
    <li><a href="#tabs-1">About</a></li>
    <li><a href="#tabs-5">Contact</a></li>
 </ul>
  <div id="tabs-1">
   <%= render "shared/about"%>
</div>
 <div id="tabs-5">
   <%= render "contact/new"%>
 </div>

其中<%= render“contact /%>”对应于视图中contact中的new.html.erb文件。

我的routes.rb中的相关代码是

代码语言:javascript
复制
match 'contact' => 'contact#new', :as => 'contact', :via => :get
match 'contact' => 'contact#create', :as => 'contact', :via => :post

这是我的控制器:

代码语言:javascript
复制
 class ContactController < ApplicationController

  def new
    @message = Message.new
  end

  def create
    @message = Message.new(params[:message])

    if @message.valid?
      NotificationsMailer.contact_pr(@message).deliver
      redirect_to(root_path, :notice => "Message was successfully sent.")
    else
      flash.now.alert = "Please fill all fields."
     render :new
    end
  end
end

然而,似乎无论我怎么尝试,我仍然无法呈现表单。如果这是一个非常简单的问题,我很抱歉,我最感兴趣的是更好地掌握Ruby on Rails的基础知识,所以任何建议都是非常感谢的!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-17 16:16:42

如果您希望在其他模板中呈现此表单(确实如此),则应将其提取到名为例如:_form.html.erb的部分模板中。

然后,您应该将

代码语言:javascript
复制
<%= render 'contact/form' %>

在视图中需要这个部分的地方(包括new.html.erb模板)。当你做完这个,你应该离开

代码语言:javascript
复制
render :new

在控制器中,因为它的工作方式与视图略有不同,并且它呈现适当的操作模板而不是部分。当然,您需要在需要这个部分的地方设置@message变量。或者,您可以在您的部分中添加:

代码语言:javascript
复制
<%= form_for(@message || Message.new) do |f| %>

更多关于布局和渲染here的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17694278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档