RoR应用程序中缺少模板

时间:2014-06-27 06:05:18

标签: ruby-on-rails

在我的ruby on rails应用程序中,我想将控件值输入控制器页面:

    below is view page:
<%= form_for :managerviewresume, :url => { :method => :post, :action => :managerviewresume }) do |f| %>
        <table class="table" width="100%">
            <tr>
                <td><%= @selection %></td> //Here I am checking radio button value
                <td>
                    <label style="font-size:small;">Selected?</label>
                    <label class="radio inline" style="font-size: small">
                    </br>&nbsp;&nbsp;&nbsp;
                    <%= f.radio_button :select, "Yes", :id => "rb_select1" %>
                    Yes
                    </label>&nbsp;&nbsp;
                    <label class="radio inline" style="font-size: small">
                    <%= f.radio_button :select, "No", :id => "rb_select2" %>
                    No
                    </label>
                </td>
            </tr>
            <tr>
                <td>
                    <%= f.submit "Save", { :class => "stylbutton" } %>
                </td>
            </tr>
        </table> 
    <% end %>

下面是控制器页面:

class ManagersController < ApplicationController
  def managerviewresume
    @selection = params[:select]
    render "managerviewresumes"
  end
end

在控制器的页面中,我在此行render 'managerviewresumes'处收到以下错误:

Missing template managers/managerviewresumes, application/managerviewresumes with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "C:/Sites/VideoResume/app/views" 

以下是路线:

  match '/managerviewresumes',  to: 'managers#managerviewresume', via: 'get'

请建议我应该从radio button页面获取view值到controller页面。 等待回复。 感谢。

1 个答案:

答案 0 :(得分:1)

<强>渲染

首先,您不需要使用render呈现与action名称相同的视图

使用Rails控制器时,您可以毫无问题地调用它:

#app/controllers/your_controller.rb
Class YourController < ApplicationController
   def your_action
       #-> will automatically render the "your_action" view
   end
end

因此,我会删除您对render操作的引用(因为这是一个不必要的步骤)。这不会直接解决问题,但应确保您的申请更加convention over configuration

-

<强>路线

其次,可能需要查看resourceful routing

在Rails&#39;在路由结构中,您可以调用resources :controller来生成一系列RESTful路由:

enter image description here

我知道您可能希望继续使用您的操作,但为了正确起见,我建议您查看config/routes.rb文件&amp;确保您使用尽可能多的基于资源的路线:

#config/routes.rb
resources :managers do
   collection do
       post :managerviewresume
   end 
end

-

<强>表格

最后,我认为你的表格需要改进

您正在使用form_for,主要用于ActiveRecord对象(如果您要创建新记录等等。似乎您更适合使用form_tag代替:

<%= form_tag managers_managerviewresume_path do %>
    <table class="table" width="100%">
        <tr>
            <td><%= @selection %></td> //Here I am checking radio button value
            <td>
                <label style="font-size:small;">Selected?</label>
                <label class="radio inline" style="font-size: small">
                </br>&nbsp;&nbsp;&nbsp;
                <%= radio_button_tag :select, "Yes", :id => "rb_select1" %>
                Yes
                </label>&nbsp;&nbsp;
                <label class="radio inline" style="font-size: small">
                <%= radio_button_tag :select, "No", :id => "rb_select2" %>
                No
                </label>
            </td>
        </tr>
        <tr>
            <td>
                <%= submit_tag "Save", { :class => "stylbutton" } %>
            </td>
        </tr>
    </table> 
<% end %>

此语法可能需要检查,但这将根据需要发送:select参数,这不是您当前表单将要执行的操作。

这应该与用于加载的Rails的views/managers/managerviewresume.html.erb文件相结合