我正在创建一个CMS的网站,你可以在其中使用'Menucards'来放置'类别'。我坚持将菜单卡的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}) %>
给我一个这样的网址:“http:// localhost:3000 / menucards / 1”
这是菜单卡的显示:
<%= link_to("Categorie toevoegen",
{:controller => 'categories',
:action => 'new',
:menucard_id => '@current_menucard'},
:class => 'btn btn-green')
%>
在application_controller中我定义了current_menucard,如下所示:
def current_menucard
current_menucard = Menucard.find(params[:id])
end
如果我按下使用类别中的link_to,则URL为“http:// localhost:3000 / categories / new?menucard_id =%40current_menucard”
我看到使用:menucard_id =&gt; '@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 %>
更新
我用MurifoX的答案更新了我的代码。现在,menucard_id仍未在数据库中更新。正如您所看到的,我使用隐藏字段来传递current_menucard的值,但它给了我以下内容:
Couldn't find Menucard without an ID
但是后来在错误中我得到了正确的参数:
Parameters:
{"menucard_id"=>"67"}
为什么不更新?
答案 0 :(得分:1)
更改:menucard_id
<%= link_to("Categorie toevoegen",
{:controller => 'categories',
:action => 'new',
:menucard_id => '@current_menucard'},
:class => 'btn btn-green')
%>
to :: id
<%= link_to("Categorie toevoegen",
{:controller => 'categories',
:action => 'new',
:id => '@current_menucard'},
:class => 'btn btn-green')
%>
并在您的类别控制器新操作中添加此行:
@menucard = Menucard.find(params[:id])
现在,您可以在新的类别视图中使用@menucard变量,并将值添加到隐藏字段中。这应该工作
答案 1 :(得分: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')
%>
我相信这可行。