我遇到了一些问题和头疼的问题,因为我不确定 RoR 是否可以实现我想要做的事情。
一些背景信息:我有一个带有多个控制器的应用程序......并且希望在这个模态示例中使用其中的 2 个。第一个是 users_controller,另一个是 Recommendations_controller。
这是我想要做的:在用户索引视图中,我有一个帖子列表。每个帖子都有一个推荐按钮。如果用户点击它,他/她将被发送到推荐索引页面,并且可以搜索并找到他/她想要与之分享帖子的用户。我以这种方式设置它的原因是因为 Recommendation 模型创建了推荐关系。
我想要它,所以当用户单击用户索引页面上的推荐按钮时,会出现一个模式(访问推荐控制器的模式),用户可以搜索他/她想与之分享帖子的用户。基本上,我想知道是否可以通过用户控制器的索引视图页面访问推荐控制器。
如果不是,是否有解决方法?如果有帮助,我可以发布我拥有的代码,但我不确定在这种情况下是否会有所帮助——因为我正在尝试看看是否有可能做我想做的事情。
谢谢!
更多细节:
建议控制器:
def index
@user = Search.find_users(params[:name], current_profile)
respond_to do |format|
format.html
format.js
end
end
index.js.haml(位于 view/recommendations 文件夹中)
:plain
$(#my-modal).show();
index.html.haml(位于 view/recommendations 文件夹中)
= form_tag post_recommendations_url, :method => "get" do
= text_field_tag :name, '', :class => "span12", :placeholder => "Please enter the name of the users you would like to share this post with."
%center
= submit_tag "Search", :class => "btn btn-primary"
index.html.haml(位于 view/posts 文件夹中)
%a{:href => "#{post_recommendations_path(post)}", :remote => true}
%i.icon-share.icon-large
Recommend Post
#my-modal.modal.hide.fade
.modal-header
%a.close{"data-dismiss" => "modal"} ×
%h6 This is a header
.modal-body
%p This is where I would like the contents of the index.html.haml file, located in the view/recommendations folder to appear.
第 2 部分:在 modal/partial 中显示搜索结果
Matzi,目前,用户点击他们想要推荐的帖子附近的链接。此链接在其中呈现带有部分 (_recommendation.html.haml) 的模式。
这个部分(现在在模式中)包含搜索form_tag
和呈现与搜索结果匹配的所有用户的代码。不幸的是,当我尝试通过输入名称并单击搜索按钮(同样,现在位于模式内部)来运行搜索时,它会将我带到以下 url,而不是在模式内部呈现结果。
http://localhost:3000/posts/2/recommendations?utf8=%E2%9C%93&name=Test&commit=Search
这是我更新后的 index.html.haml(位于 view/posts 文件夹中)的样子:
= link_to 'Recommend Post', post_recommendations_path(post), :remote => true, "data-toggle" => "modal"
#my-modal.modal.hide
.modal-header
%a.close{"data-dismiss" => "modal"} ×
%h6
%i.icon-share.icon-large
Recommend Post
.modal-body
#modal-rec-body
%p *this is where _recommendation.html.haml is rendered*
更新了 index.js.haml
:plain
$("#modal-rec-body").html("#{escape_javascript(render('recommendations/recommendation'))}");
$('#my-modal').modal({
keyboard: true,
show: true
});
_recommendation.html.haml
.span12
= form_tag post_recommendations_path, :method => "get" do
= text_field_tag :name, '', :class => "span12", :placeholder => "Please enter the name of the user you would like to share this post with.", :style => "max-width:520px;"
%center
= submit_tag "Search", :class => "btn btn-primary", :remote => "true"
- @user.each do |i|
- unless current_profile == i
.row-fluid
.span6
.row-fluid
.well{:style => "margin-left:0px;"}
.row-fluid
.span2
=image_tag i.avatar(:bio), :class=> "sidebar_avatar"
.span6
%dl{:style => "margin:0px"}
%dt
%i.icon-user
Name
%dd= i.name
%dt
%i.icon-map-marker
Location
%dd= i.location
.span4
- form_for :recommendation do |r|
= r.hidden_field :friend_id, :value => i.account.id
= r.submit "Send Recommendation", :class => "btn btn-primary"
问题:不幸的是,似乎当我单击模式内的提交(搜索)按钮而不是在模式内呈现结果时,它会将浏览器重定向到post_recommendations_path (posts/post.id/recommendations)
. 我想在模态框内显示搜索结果,而无需将其重定向到帖子推荐路径。
一如既往,非常感谢!我非常感谢您的帮助——感谢您,我对 AJAX 有了更好的了解。谢谢!