0

私はホームページHomeControllerを持っています。これは、ページの上部にいくつかのヘッダーコンテンツと他のhtmlを含むホームページをロードします。また、ページ上のすべてのコンテンツの下にstoryBoardがあり、次に他のホームページのhtmlコンテンツがあります。これで、ストーリーボードにモデルビューコントローラーも追加されました。私の質問は、ホームページのストーリーボード領域にビューをロードするにはどうすればよいかということです。ストーリーボードが表示されるホームビュー領域にストーリーボードビューを配置するために、HomeControllerからStoryBoardコントローラーに通信する必要がありますか?

2つの関係を設定する方法がわかりません。

コードで更新されました。

このコードは、実際にはRailsによって生成された足場コードです。うまくいけば、これは私がやろうとしていることを明確にするのに役立つでしょう。ストーリーボードをホームビューのストーリーボードdivタグにレンダリングできるようにしたいだけです。

HomeController

class HomeController < ApplicationController
  def index
  end

end

ホームビュー

<body>
<div id="description">
    <div id="info">
        <p class="title">Sed ut perspiciatis unde omnis</p>
        <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo</p>
    </div>
</div>
<div id="soryboard">
  // add story board view here
</div>
<div id="section2">
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo</p>
</div>

</body>

StoryBoardコントローラー

class StoryboardsController < ApplicationController
  # GET /storyboards
  # GET /storyboards.json
  def index
    @storyboards = Storyboard.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @storyboards }
    end
  end

  # GET /storyboards/1
  # GET /storyboards/1.json
  def show
    @storyboard = Storyboard.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @storyboard }
    end
  end

  # GET /storyboards/new
  # GET /storyboards/new.json
  def new
    @storyboard = Storyboard.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @storyboard }
    end
  end

  # GET /storyboards/1/edit
  def edit
    @storyboard = Storyboard.find(params[:id])
  end

  # POST /storyboards
  # POST /storyboards.json
  def create
    @storyboard = Storyboard.new(params[:storyboard])

    respond_to do |format|
      if @storyboard.save
        format.html { redirect_to @storyboard, notice: 'Storyboard was successfully created.' }
        format.json { render json: @storyboard, status: :created, location: @storyboard }
      else
        format.html { render action: "new" }
        format.json { render json: @storyboard.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /storyboards/1
  # PUT /storyboards/1.json
  def update
    @storyboard = Storyboard.find(params[:id])

    respond_to do |format|
      if @storyboard.update_attributes(params[:storyboard])
        format.html { redirect_to @storyboard, notice: 'Storyboard was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @storyboard.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /storyboards/1
  # DELETE /storyboards/1.json
  def destroy
    @storyboard = Storyboard.find(params[:id])
    @storyboard.destroy

    respond_to do |format|
      format.html { redirect_to storyboards_url }
      format.json { head :no_content }
    end
  end
end

ストーリーボードビュー

<h1>Listing storyboard</h1>

<table>
  <tr>
    <th>Image url</th>
    <th>Title</th>
    <th>Description</th>
    <th>Category</th>
    <th>Link</th>
    <th>Width</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @storyboards.each do |storyboard| %>
  <tr>
    <td><%= storyboard.image_url %></td>
    <td><%= storyboard.title %></td>
    <td><%= storyboard.description %></td>
    <td><%= storyboard.category %></td>
    <td><%= storyboard.link %></td>
    <td><%= storyboard.width %></td>
    <td><%= link_to 'Show', storyboard %></td>
    <td><%= link_to 'Edit', edit_storyboard_path(storyboard) %></td>
    <td><%= link_to 'Destroy', storyboard, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Storyboard', new_storyboard_path %>
4

1 に答える 1

2

#renderRailsでは、任意のテンプレートをレンダリングできます。

# home/index.html.erb
# ...
<div id="soryboard">
 <%= render :template => "storyboard/index" %>
</div>
# ...

ただし、そのテンプレートで使用されているすべてのデータがHomeControllerアクションでも使用できることを確認する必要があります。


さらに、まだ使用していない場合は、アプリケーションレイアウトファイルをさらに活用することをお勧めします。これは通常、ヘッダーやフッターなどが配置される場所であるため
です。一般的なアプリケーションのレイアウト:

<!DOCTYPE html>
<html>
<head>
  <title>Title</title>
  <%= csrf_meta_tag %>
</head>
<body id="<%= params[:controller].gsub("/","_")+"_"+params[:action] %>">
  <div id="wrapper">
    <div id="header">
    </div>

    <!-- renders the corresponding template -->
    <%= yield %> 

    <div id="footer"> 
      <small>&copy; <%= Time.now.year %></small>
    </div>    
  </div>    
</body>
</html>
于 2012-12-06T16:04:22.363 に答える