2017-02-28 46 views
1

我正在嘗試使用局部視圖的控制器而不是視圖來呈現它。我的情況如下;使用部分視圖的控制器而不是

我有用戶和用戶可以張貼一些東西。這就是爲什麼我有兩個控制器和模型(用戶和帖子)。

在用戶的頁面中,有一個textarea用於輸入要發佈的內容和按鈕。我已經寫了這個觀點... /人次/職位/ _new.html.erb如局部視圖和我呈現在... /視圖/用戶/ index.html.erb部分和使用部分視圖我已經使用這段代碼。

<%= render 'posts/new' %> 

爲了創建帖子,我寫了這個方法;

posts_controller.rb

def new 
    @post = Post.new 
    end 

    def edit 
    @post = Post.find(params[:id]) 
    end 

    def create 
    @user = User.find(params[:user_id]) 
    @post = @user.posts.create(post_params) 

    if @post.save 
     redirect_to root_path 
    else 
     render 'new' 
    end 
    end 

... /人次/職位/ _new.html.erb

<%= form_for :post do |f| %> 
      <%= f.text_area :content, :class => "form-control", "rows" => "5", "id" => "comment", "placeholder" => "Write something to share with your mates ..." %><br/> 
      <%= button_tag "Share", :class => "btn btn-primary pull-right" do %> 
      <span class="glyphicon glyphicon-share-alt"></span> 
      <% end %> 
     <% end %> 

這裏的問題是,當我點擊的部分按鈕查看設備控制器的用戶#RegistrationController。爲什麼?

Here,指南告訴我們,如果partials和渲染它的視圖之間存在關係,rails會理解我們想要做什麼,並使用partial view的控制器來代替。我在這裏錯過了什麼嗎?

回答

1

與您的形式更明確的..,

<%= form_for @post do |f| %> 

和初始化@post您的用戶#索引控制器操作爲

@post = Post.new 

問題是,在你當前的解決方案中,表單沒有給出明確的url和方法,因此不知道你想用它創建一個帖子。

+0

它現在好像現在去糾正控制器,但給出了這個錯誤'找不到用戶與'id'='在** PostsController#創建**下面的代碼'@user = User.find(params [:user_id ])' – Nerzid

+0

但仍然,在@ user#index **中執行'@post = Post.new'類型的初始化不是錯誤的嗎? – Nerzid

+0

這沒有錯。您也可以只指定網址和方法,但使用@post即可。對於:user_id,您需要將param與表單一起傳遞給... –

0

button_tag

<%= form_for :post do |f| %> 
     <%= f.text_area :content, :class => "form-control", "rows" => "5", "id" => "comment", "placeholder" => "Write something to share with your mates ..." %><br/> 
     <%= button_tag "Share", :type => "submit", :class => "btn btn-primary pull-right" do %> 
     <span class="glyphicon glyphicon-share-alt"></span> 
     <% end %> 
    <% end %> 

添加:type => 'submit'或更改button_tagf.button這樣

 <%= f.button :submit, :class => "btn btn-primary pull-right" do %> 
     <span class="glyphicon glyphicon-share-alt"></span> 
     <% end %> 
+0

這不會改變任何東西。這已經是一個提交按鈕。 – Nerzid

相關問題