我正在创建一个带有 CMS 的网站,您可以在其中放置“类别”的“菜单卡”。我被困在将菜单卡的 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
在菜单卡索引中:
<%= link_to("menucard", { :action => 'show', :id => menucard.id}) %>
这给了我一个这样的 URL:“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
如果我按使用类别中的链接到,则 URL 为“http://localhost:3000/categories/new?menucard_id=%40current_menucard”
我看到使用 :menucard_id => '@current_menucard' 并没有真正起作用。我被困在这部分。感谢您的帮助!
了解更多信息:
类别控制器:
<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"}
为什么不更新了?