Rails在另一个模型的视图中形成一个模型的部分渲染

时间:2011-12-24 03:54:51

标签: ruby-on-rails-3 forms partial-views

我正在构建一个rails应用程序,现在我正在努力在另一个模型的视图中显示来自一个模型的部分。

所以我有模型UserGoal。用户可以有很多目标,目标只有一个用户。

User的展示视图中,我列出了该用户的目标。我正在尝试显示一个允许您编辑目标的jQuery对话框。我有一个form_for部分用于我基于初始脚手架修改的目标

<%= form_for([@user, @goal]) do |f| %>
...
<% end %>

我正在尝试在<div>视图中创建可以呈现该表单的users#show,但我无法弄清楚如何(或者甚至可能)将正确的参数传递给form_for部分

<%= div_for(goal, :class => "dialog edit", :title => "Edit Goal") do %>
   <%= render :partial => 'goals/form' %>
<% end %>

给了我undefined method 'model_name' for NilClass错误,让我相信form_for不知道@user和@goal应该是什么。

用户#show的控制器是这样的

def show
   @user = User.find(params[:id])
end

和目标#edit

def edit
   @goal = @user.goals.find(params[:id])
end

路线看起来像这样

resources :users do
   resources :goals
end

我需要调整哪些内容才能在user#show视图中显示修改目标表单?

2 个答案:

答案 0 :(得分:0)

如果您尝试使用目标/表单,可能需要部分内部用户视图或将参数作为本地哈希发送

答案 1 :(得分:-1)

我不得不做一个小的语法更改,但它对我有用。

<%= render 'goals/form', :goal => @goal %>