2012-12-19 48 views
1

我正在创建一个CMS的网站,你有'Menucards',你可以把'Categories'放入。我被困在添加菜单卡的ID到类别的数据库表中。从另一个项目添加一个ID /变量到当前项目并添加到数据库

我认为会的工作方式是以下几点:

在数据库类别表

create_table "categories", :force => true do |t| 
t.datetime "created_at", :null => false 
t.datetime "updated_at", :null => false 
t.string "name" 
t.integer "menucard_id" 
end 

在menucards指数:

<%= link_to("menucard", { :action => 'show', :id => menucard.id}) %> 

这使我像一个URL这个:“http:// localhost:3000/menucards/1”

这是t他menucard:

<%= link_to("Categorie toevoegen", 
    {:controller => 'categories', 
     :action => 'new', 
     :menucard_id => '@current_menucard'}, 
     :class => 'btn btn-green') 
%> 

在我定义current_menucard这样的application_controller:

def current_menucard 
    current_menucard = Menucard.find(params[:id]) 
end 

如果我按使用来自类别的link_to的网址为“http://本地主机:3000 /分类/新? menucard_id =%40current_menucard“

我看到使用:menucard_id =>'@current_menucard'实际上并不工作。我被困在这个部分。 感谢您的帮助!

欲了解更多信息:

categories_controller:

<div class="form-area"> 
<%= form_for([@category], :url => { :action => 'create'}, :html => { :id => "js-editor-page"}) do |category| %> 
    <label for="name"> 
     <h2>Naam</h2> 
     <%= category.text_field :name, :class => "full", :placeholder => "Wat is de naam van deze categorie?" %> 
    </label> 
    <%= category.hidden_field :menucard_id, :value => current_menucard %> 
</div><!-- .form-area --> 
<aside class="form-actions"> 
    <%= category.submit "Opslaan", :class => "btn btn-green" %> 
<% end %> 

UPDATE

我更新了我的代码MurifoX的答案。现在,数据库中的menucard_id仍未更新。正如你可以看到我用一个隐藏字段来传递current_menucard的价值,但它给了我下面的:

Couldn't find Menucard without an ID 

但后来在我得到了正确的参数的errorPage:

Parameters: 

{"menucard_id"=>"67"} 

为什么是不是正在更新?

回答

1

变化:menucard_id

<%= link_to("Categorie toevoegen", 
{:controller => 'categories', 
    :action => 'new', 
    :menucard_id => '@current_menucard'}, 
    :class => 'btn btn-green') 
%> 

到:ID

<%= link_to("Categorie toevoegen", 
{:controller => 'categories', 
    :action => 'new', 
    :id => '@current_menucard'}, 
    :class => 'btn btn-green') 
%> 

,并在您的类别加入这一行控制器新动作:

@menucard = Menucard.find(params[:id]) 

现在你可以用工作@ menucard变量添加到您的新类别视图中,并将该值添加到隐藏字段中。这应该工作

+0

这工作就像一个魅力 –

0

内,您的应用程序控制器,确定您所使用的方法作为辅助

helper_method :current_menucard 
def current_menucard 
    mc = Menucard.find(params[:id]) 
    mc.id 
end 

在您看来,使用返回到你的方法和整数

<%= link_to("Categorie toevoegen", 
{:controller => 'categories', 
    :action => 'new', 
    :menucard_id => current_menucard}, 
    :class => 'btn btn-green') 
%> 

我认为这可能工作。

+0

Id确实工作,现在它选择正确的menucard_id。只有它不在数据库中更新。 menucard_id仍然是NULL –

相关问题