rails - 对路由和params感到困惑

时间:2011-05-16 21:07:22

标签: ruby-on-rails-3 params

我有两个模型,分组和用户

用户belongs_to组和 组has_many用户

在我的群组/ show.html.erb中,我有用户注册表单

<h1>Create user</h1>

<%= form_for @user do |f| %>
  <%= render 'shared/error_messages', :object => f.object %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </div>
  <div class="field">
    <%= f.label :password %><br />
    <%= f.password_field :password %>
  </div>
  <div class="field">
    <%= f.label :password_confirmation, "Confirmation" %><br />
    <%= f.password_field :password_confirmation %>
  </div>
  <div class="actions">
    <%= f.submit "Sign up" %>
  </div>
<% end %>    

要获得组与用户之间的关系,我在Users控制器中有一个create方法,如下所示

def create
    @group = Group.find(params[:group][:id])    
    @user = @group.users.build(params[:user])
    if @user.save
      flash[:success] = "You have created a new user"
      redirect_to group_path
    else
      @title = "Create user"
      render 'new'
    end
end

我也尝试过:  @group = Group.find(params [:id])

@group = Group.find(params [:group_id])

但我仍然收到错误

基本上我想在group / show.html.erb中创建新用户,并将该用户与创建用户的组相关联。例如,如果用户/组3创建了用户,如何在用户控制器中设置我的创建方法以确保此关系成立?

总的来说,我一直在http://ruby.railstutorial.org/chapters/user-microposts#sec:creating_microposts关注Hartl Rails教程书,并遵循表单和创建方法的方法。但是我不知道如何将groups / 3的参数转换为像@group = Group.find(?????)这样的查找方法

有人可以赐教,这个问题一直困扰着我好几天了。

提前致谢

1 个答案:

答案 0 :(得分:1)

提交表单后,会将您带到#create用户。此路由没有group_id段。

要在那里传递group_id,您需要将其存储在表单的隐藏字段中。