0

我想构建一个 form_tag,允许我向客户发布新便条。我的 rake 路线如下所示:

[hchq (master)]$ rake routes
    user_notes GET    /users/:user_id/notes(.:format)          notes#index
               POST   /users/:user_id/notes(.:format)          notes#create
 new_user_note GET    /users/:user_id/notes/new(.:format)      notes#new
edit_user_note GET    /users/:user_id/notes/:id/edit(.:format) notes#edit
     user_note GET    /users/:user_id/notes/:id(.:format)      notes#show
               PUT    /users/:user_id/notes/:id(.:format)      notes#update
               DELETE /users/:user_id/notes/:id(.:format)      notes#destroy
         users GET    /users(.:format)                         users#index
               POST   /users(.:format)                         users#create
      new_user GET    /users/new(.:format)                     users#new
     edit_user GET    /users/:id/edit(.:format)                users#edit
          user GET    /users/:id(.:format)                     users#show
               PUT    /users/:id(.:format)                     users#update
               DELETE /users/:id(.:format)                     users#destroy
      sessions POST   /sessions(.:format)                      sessions#create
   new_session GET    /sessions/new(.:format)                  sessions#new
       session DELETE /sessions/:id(.:format)                  sessions#destroy
       clients GET    /clients(.:format)                       clients#index
               POST   /clients(.:format)                       clients#create
    new_client GET    /clients/new(.:format)                   clients#new
   edit_client GET    /clients/:id/edit(.:format)              clients#edit
        client GET    /clients/:id(.:format)                   clients#show
               PUT    /clients/:id(.:format)                   clients#update
               DELETE /clients/:id(.:format)                   clients#destroy
          root        /                                        clients#index
        signup        /signup(.:format)                        users#new
        signin        /signin(.:format)                        sessions#new
       signout DELETE /signout(.:format)                       sessions#destroy

我可以只发布到笔记上的创建操作,还是需要获取 new_user_note_path?为什么?我在控制器中有一个 @client 实例变量。

这是我目前拥有的:

<%= form_tag(new_user_note_path, method: :get) do |f| %>
    <%= render 'shared/error_messages', object: f.object %> 
    <div class="field">
        <%= f.text_area :content, placeholder: "Compose new note" %> 
    </div>
<%= f.submit "New Note"%> 
<% end %>

这让我遇到了这个错误:

在此处输入图像描述

我认为需要发生的是我需要构建一个 form_tag 来点击控制器的 create 或 new_user_note 操作。我认为它需要点击 new_user_note,现在我考虑更多以便它可以设置客户端 ID。它是否正确?

如果是这样,我该如何构建我的 form_tag?我需要传递带有 client_id 的隐藏字段吗?

另外,关于 new 和 create 操作,我的笔记控制器应该是什么样子?

4

2 回答 2

1
  1. 由于 user 是一种资源,因此您应该:postto users_notes_path,这将由 处理notes#create,因为它意味着资源
  2. 同样,既然 user 是一种资源,为什么不是 user form_for?(或 simpleform/formtastic/whated 适合你)?
于 2012-06-08T15:39:59.980 回答
1

您的用户资源是否映射到用户模型?如果是这样,那么 form_for 是你最好的选择。使用 form_for 时传入实例变量

<%= form_for @user do |f| %>

于 2012-06-08T20:05:59.720 回答