路由帖子说缺少模板

时间:2013-11-18 11:46:35

标签: ruby-on-rails routing ruby-on-rails-4

我对此很困惑;我在这里有自定义路线。

我有一个群组/:id / new_caretaker。这有一个表格。每当该表单被POST时,它应该转到同一页面;但是采用不同的方法。

但是,如果我发布表单Missing template groups/create_caretaker, application/create_caretaker

我该如何解决这个问题?

这是我的表格:

<%= form_tag(controller: "groups", action: "create_caretaker", method: "post") do %>
  <div class="field">
    <%= text_field_tag('email') %>
  </div>
  <%= submit_tag "Opslaan"%>
<% end %>

我的路线:

  get "/groups/:id/new_caretaker" => "groups#new_caretaker", :as => :new_caretaker
  post "/groups/:id/new_caretaker" => "groups#create_caretaker"

添加了groups.controller方法:

注意:new_caretaker从:before_action

获取@group
  def new_caretaker

  end

  def create_caretaker
    email = params[:email]

    if !email.blank?
      userToAdd = User.find_by_email(email)
      if userToAdd.blank?
        #User doesn't exist
      else
        #User does exist
        respond_to do |format|
          if @group.users.find_by_id(userToAdd)
            @theAlert = 'Deze gebruiker zit al in de groep en is niet toegevoegd'
            format.html { render action: 'new_caretaker' }
            format.json { render json: @theAlert, status: :unprocessable_entity }
          else
            @group.users << userToAdd
            format.html { redirect_to @group, notice: 'De begeleider is toegevoegd.' }
          end
        end
      end
    end
  end

3 个答案:

答案 0 :(得分:0)

if !email.blank? =&gt; false和if userToAdd.blank? =&gt; true分支不呈现或重定向。因此,如果要查找具有该操作名称的模板,请使用rails。

答案 1 :(得分:0)

我建议您改进路由编辑routes.rb

resources :groups do
  member do
    get 'new_caretaker'
    post 'create_caretaker'
  end
end

然后你调用这个重定向:

redirect_to group_new_caretaker_path(@group)

在需要时在控制器中。

这样,您还可以在params[:group_id]控制器方法中获得new_caretaker参数,以便能够处理与组相关的数据(如果需要)。

答案 2 :(得分:0)

修复:我没有在if中呈现任何内容,只是在else中。但是答案中有一些很好的提示。