模板缺失 - rails

时间:2017-02-13 10:53:16

标签: ruby-on-rails date

这是我的html.erb文件..我收到此错误

  

缺少模板缺少模板页面/验证,应用程序/验证   with {:locale => [:en],:formats => [:html],:variants => [],   :handlers => [:erb,:builder,:raw,:ruby,:coffee,:jbuilder]}。   搜索:*" / home / spritle / web-beerboard-menu / app / views" *   " /var/lib/gems/2.3.0/gems/devise-4.2.0/app/views"

  <%= form_tag({:controller=>"pages", :action=>"verify"}, method: :get) do %>
  <div class="row">
  <div class=" col-lg-4 col-xs-4 col-sm-4 " >
            <label for="q">Enter date of Birth</label>
  </div>
  </div>
  <div class="row">
  <div class=" col-lg-4 col-xs-4 col-sm-4" > 
                <input id="dob" name="dob" type="date" class="form-control" required /> </div>
   </div>
  <div class="row">
  <div class=" col-lg-4 col-xs-4 col-sm-4" > 
                 <%= submit_tag 'Go', name: nil %> </div>
 </div>
  <% end %>

这是我的控制器文件

def verify
    currentdate = Time.now.strftime("%Y-%m-%d") 
    dateofb =  Date.parse(params[:dob]).strftime("%Y-%m-%d")
    date = (currentdate.to_date - dateofb.to_date).to_i
end

5 个答案:

答案 0 :(得分:2)

错误与解析日期无关。它说Template is missing

您必须为verify方法添加模板或添加渲染/重定向。

答案 1 :(得分:1)

to_date需要dd/mm/yyyyyyyy/mm/dd

中的日期
currentdate = Time.now.strftime("%Y-%d-%m") 
currentdate.to_date 

current_date采用yyyy-dd-mm格式导致

  

ArgumentError:无效日期

将current_date更改为

currentdate = Time.now.strftime("%Y-%m-%d") 

此外,

第二个问题是,您需要为pages/verify.html

pages/verify.js行动添加verifyPagesController

答案 2 :(得分:0)

您调用Pages#verify并且服务器需要为您返回一些响应。错误表明您没有指定要返回的内容。 也许你想渲染一些页面(render :action)?还是redirect_to some_path? 或许你想用dob返回一些json?然后你需要用render json: {date_of_birth: date}

完成你的控制器动作

答案 3 :(得分:0)

您当前的错误是由模板文件的命名引起的。 我不知道你用html显示的文件是什么,但你要链接验证,以及你发布的动作。如果您要从其他网页发送数据,并希望在verify - 操作中执行某项操作,则必须执行此操作,并且要么具有以后显示的verify.html.erb模板,或'redirect_to or redirect_back in your验证`操作。

看起来像是这样,在表单提交之前将用户发回到他们来自的地方(并回退到root_path(这应该是其他的东西)。

def verify
    currentdate = Time.now.strftime("%Y-%m-%d") 
    dateofb =  Date.parse(params[:dob]).strftime("%Y-%m-%d")
    date = (currentdate.to_date - dateofb.to_date).to_i
    redirect_back fallback_location: root_path
end

替代方法是在表单提交后创建要呈现的views/pages/verify.html.erb

答案 4 :(得分:0)

在控制器中,方法验证应该:

  • 执行某种验证并

    • 如果确定:执行某些操作(如保存数据),然后重定向
    • else:向flash [:warn]写下警告信息,然后重定向到用户可以纠正错误的视图。

默认情况下,如果您不提供显式重定向,Rails将尝试在/ views / application或/ views / pages /中找到名称为verify.html.erb的页面视图(假设您的控制器名为Page_controller。 RB)。

永远不要忘记:当您在控制器中添加新方法并将表单重定向到该方法时,您需要提供显式重定向(失败和成功)或使用创建特定视图并使用隐式名称约定