1

「Categories」を入れることができる「Menucards」があるCMSでWebサイトを作成しています。メニューカードの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

カテゴリからlink_toを使用するを押すと、URLは「http:// localhost:3000 / category / 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"}

なぜ更新されないのですか?

4

2 に答える 2

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') 
%>

私はこれがうまくいくと信じています。

于 2012-12-19T11:33:51.330 に答える
0

変更: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 変数を操作し、非表示フィールドに値を追加できます。これはうまくいくはずです

于 2012-12-20T11:48:04.430 に答える