我正在嘗試使用局部視圖的控制器而不是視圖來呈現它。我的情況如下;使用部分視圖的控制器而不是
我有用戶和用戶可以張貼一些東西。這就是爲什麼我有兩個控制器和模型(用戶和帖子)。
在用戶的頁面中,有一個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的控制器來代替。我在這裏錯過了什麼嗎?
它現在好像現在去糾正控制器,但給出了這個錯誤'找不到用戶與'id'='在** PostsController#創建**下面的代碼'@user = User.find(params [:user_id ])' – Nerzid
但仍然,在@ user#index **中執行'@post = Post.new'類型的初始化不是錯誤的嗎? – Nerzid
這沒有錯。您也可以只指定網址和方法,但使用@post即可。對於:user_id,您需要將param與表單一起傳遞給... –